实现了消息的单发和群发,Tomcat8及以上版本才可使用,看清楚util工具类的格式,可以重新定义消息的格式,前端发消息也要按这个格式发,一段时间不访问服务器,服务器一般会断开连接,可以做一个心跳包,每隔几十秒访问一次服务器,这样服务器就不会断开连接了,心跳包是前端做的,最好再让前端做一个重连,防止意外情况。
依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>5.1.16.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-websocket</artifactId>
<version>8.5.31</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
Java代码
config
这个类controller里会用,但是里面不要写bean,写了在服务器上会报错
import org.springframework.context.annotation.Configuration;
@Configuration
public class WebSocketConfig {
//里面什么也不写,否则到服务器上会报错
}
controller
客户端的注册onOpen方法
客户端发送消息onMessage方法
客户端下线onClose方法
客户端异常断开连接(断网,强制中断连接等)onError方法
通知其他客户端noticeUser方法
import com.fasterxml.jackson.databind.ObjectMapper;
import com.web.chat.pojo.Message;
import com.web.chat.util.MessageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.socket.server.standard.SpringConfigurator;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java