spring boot集成websocket
WebSocket协议RFC 6455提供了一种标准化方法,可通过单个TCP连接在客户端和服务器之间建立全双工双向通信通道。 它是与HTTP不同的TCP协议,但旨在通过端口80和443在HTTP上工作,并允许重复使用现有的防火墙规则。
WebSocket是全双工双向通信通道, 因此服务器和客户端可以相互进行通信, 而不像HTTP那样只能一个Request对应一个Response,且Response只能被动相应。
集成步骤
-
引用Maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
-
实现
WebSocketHandler
接口,该接口中需要实现的方法便是在websocket连接中的各种状态(生命周期)的方法,这些方法中定义对WebSocket消息的一种处理/** * 实现消息处理类 */ @Component public class MessageHandler implements WebSocketHandler { // 存储WebSocketSession, 要保证线程安全, 因此使用ConcurrentHashMap private Map<String, WebSocketSession> map = new ConcurrentHashMap<>(); /** * websocket连接后调用该方法 * @param webSocketSession * @throws Exception */ @Override public void afterConnectionEstablished(WebSocketSession webSocketSession) throws Exception { System.out.println("--------------------------websocket连接------------------------------"); System.out.println("连接id:" + webSocketSession.getId()); map.put(webSocketSession.getId(), webSocketSession); } /** * 接受websocket消息 * @param webSocketSession * @param webSocketMessage * @throws Exception */ @Override public void handleMessage(WebSocketSession webSocketSession, WebSocketMessage<?> webSocketMessage) throws Exception { System.out.println("-------------------------------webs