首先pom.xml
& lt; parent> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-parent & lt; version> 1.5.8.RELEASE & lt;/parent> & lt; dependency> & lt; groupId> org.apache.commons & lt; artifactId> commons-io & lt;/dependency> & lt; dependency> & lt; groupId> javax.websocket & lt; artifactId> javax.websocket-api & lt; version> 1.0 & lt;/version> & lt; scope> provided & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework & lt; artifactId> spring-websocket & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-web & lt; exclusions> & lt; exclusion> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-tomcat & lt;/exclusion> & lt;/exclusions> & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-undertow & lt;/dependency>
接收消息后的处理类GameHandler:
进口java.net.URI; 进口org.springframework.web.socket.BinaryMessage; 进口org.springframework.web.socket.CloseStatus; 进口org.springframework.web.socket.PongMessage; 进口org.springframework.web.socket.TextMessage; 进口org.springframework.web.socket.WebSocketSession; 进口org.springframework.web.socket.handler.AbstractWebSocketHandler; 公开课GameHandler延伸AbstractWebSocketHandler {/* * *处理字符串类的信息 * * @param会话 * @param消息 * @throws例外 */@Override 保护无效handleTextMessage (WebSocketSession会话,TextMessage消息){抛出异常 会话。sendMessage(新TextMessage (message.asBytes ())); }/* * *处理二进制类的信息 * * @param会话 * @param消息 * @throws例外 */@Override 保护无效handleBinaryMessage (WebSocketSession会话,BinaryMessage消息){抛出异常 会话。sendMessage(新BinaryMessage (message.getPayload ())); }/* * *乒乓球 * * @param会话 * @param消息 * @throws例外 */@Override 保护无效handlePongMessage (WebSocketSession会话,PongMessage消息){抛出异常 }/* * *传出错误的处理 * * @param会话 * @param例外 * @throws例外 */@Override 公共空间handleTransportError (WebSocketSession会话,Throwable异常)抛出异常{ }/* * *连接关闭的处理 * * @param会话 * @param状态 * @throws例外 */@Override 公共空间afterConnectionClosed (WebSocketSession会话,CloseStatus状态){抛出异常 }/* * *连接建立后的处理 * * @param会话 * @throws例外 */@Override 公共空间afterConnectionEstablished (WebSocketSession会话){抛出异常 } }
,握手信息拦截器WebSocketHandshakeInterceptor:
进口java.util.Map; 进口javax.servlet.http.Cookie; 进口org.springframework.http.server.ServerHttpRequest; 进口org.springframework.http.server.ServerHttpResponse; 进口org.springframework.http.server.ServletServerHttpRequest; 进口org.springframework.web.socket.WebSocketHandler; 进口org.springframework.web.socket.server.HandshakeInterceptor; 公共类WebSocketHandshakeInterceptor实现HandshakeInterceptor { @Override 公共布尔beforeHandshake (ServerHttpRequest请求,ServerHttpResponse shr1, WebSocketHandler wsh, Map<字符串,Object>{属性)抛出异常//此处可以做一些权限认证的事情或者其他 返回true; } @Override 公共空afterHandshake (ServerHttpRequest萎缩,ServerHttpResponse shr1, WebSocketHandler wsh,异常excptn) { } }
使用WebSocket的配置类WebSocketConfig:
进口org.springframework.context.annotation.Bean; 进口org.springframework.context.annotation.Configuration; 进口org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 进口org.springframework.web.socket.config.annotation.EnableWebSocket; 进口org.springframework.web.socket.config.annotation.WebSocketConfigurer; 进口org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; @ configuration @EnableWebSocket 公共类WebSocketConfig WebMvcConfigurerAdapter延伸实现WebSocketConfigurer { @Override 公共空间registerWebSocketHandlers (WebSocketHandlerRegistry注册表){//允许连接的域,只能以http或https开的头 String [] allowsOrigins={" http://127.0.0.1:1213 ", " http://localhost: 1213 "}; registry.addHandler (gameHandler()/游戏).addInterceptors (handshakeInterceptor ()) .setAllowedOrigins (allowsOrigins); } @ bean 公共GameHandler GameHandler () { 返回新GameHandler (); } @ bean 公共WebSocketHandshakeInterceptor handshakeInterceptor () { 返回新WebSocketHandshakeInterceptor (); } }Java中Spring WebSocket详解