1. 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<version>2.6.6</version>
</dependency>
2. 创建WebSocketConfig
package com.yyf.websocket;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter getServerEndpointExporter(){
return new ServerEndpointExporter ();
}
}
3. 创建WebSocketServer
package com.yyf.websocket;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.ConcurrentHashMap;
@Component
@ServerEndpoint ("/websocket/{oid}")
public class WebSocketServer {
public final static ConcurrentHashMap<String,Session> sessionMap= new ConcurrentHashMap<>();
// 当前端发送请求简历websocket连接 就会执行 @ONOpen方法
@OnOpen
public void open(@PathParam ("oid") String orderId, Session session){
sessionMap.put (orderId,session);
}
// 前端关闭页面或者主动关闭websocket 连接,都会执行close
@OnClose
public void close(@PathParam ("oid") String orderId){
sessionMap.remove (orderId);
}
}
4.前端实现