概要
SpringBoot项目集成WebSocket,完成server端和client端连接,消息的收发。
服务端
环境
Jar包依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
代码实现
定义WebSocketServerConfig配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketServerConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
定义WebSocketServer服务,使用 @ServerEndpoint 注解表示此类是一个 WebSocket 端点。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;
/**
* @auther yuyanze
* @create 2024-10-15-14:58
* @description 使用 @ServerEndpoint 注解表示此类是一个 WebSocket 端点
* 通过 value 注解,指定 websocket 的路径
*/
@Component
@ServerEndpoint(value = "/websocket")
public class WebSocketServer {
private static final Logger logger = LoggerFactory.getLogger(WebSocketServer.class);
private Session session;
// 记录连接的客户端
private static ConcurrentHashMap<String, Session> clients = new ConcurrentHashMap<>();
@OnOpen
public void onOpen(Session session) {
// 连接打开时,将session添加到clients中
clients.put(session.getId(), session);
logger.info("连接打开: {}", session.getId());
}
@OnClose
public void onClose(Session session) {