原文如下
Spring Boot provides WebSockets auto-configuration for embedded Tomcat (8 and 7), Jetty 9 and Undertow. If you’re deploying a war file to a standalone container, Spring Boot assumes that the container will be responsible for the configuration of its WebSocket support.
Spring Framework provides rich WebSocket support that can be easily accessed via the spring-boot-starter-websocket module.
开始配置,pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
MyWebSocketConfig
@Configuration
@EnableWebSocket
public class MyWebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) {
webSocketHandlerRegistry
.addHandler(myTextWebSocketHandler(), "/alarm/webSocket")
.addInterceptors(myHttpSessionHandshakeInterceptor())
.setAllowedOrigins("http://mydomain.com");
//可指定多个跨域,如果无需限制可使用 *
}
//用于定义 WebSocket 的消息处理
@Bean
public WebSocketHandler myTextWebSocketHandler() {
return new MyTextWebSocketHandler();
}
//用于处理 WebSocket 连接
@Bean
public HandshakeInterceptor myHttpSessionHandshakeInterceptor(){
return new MyHttpSessionHandshakeInterceptor();
}
}
MyHttpSessionHandshakeInterceptor
public class MyHttpSessionHandshakeInterceptor extends HttpSessionHandshakeInterceptor {
private static final Logger log = LoggerFactory.getLogger(MyHttpSessionHandshakeInterceptor.class);
//握手前
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,