SpringBoot结合WebSocket进行消息推送
一、首先先搭建个简单的SpringBoot项目
二、在POM文件中将WebSocket的包导入
<!--整合WebSocket-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
三、WebSocket的配置类
/**
* 开启WebSocket,WebSocket的配置类
*/
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
四、WebSocket的消息处理类
/**
* WebSocket服务类
*/
@ServerEndpoint("/websocket/{cid}")
@Component
public class WebSocketServer {
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
//接收cid
private String cid="";
/**
* 连接建立成功调用的方法*/
@OnOpen
public void onOpen(Session session,@PathParam("cid") String cid) {
this.session = session;
webSocketSet.add(this); //加入set中
addOnlineCount(); //在线数加1
System.out.println("有新窗口开始监听:"+cid+",当前在线人数为" + getOnlineCount());
this.cid=cid;
try {
sendMessage("连接成功");
} catch (IOException e) {
System.out.println("websocket IO异常"