可以通过 Java 配置启用 SockJS:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/myHandler")
.withSockJS();
}
@Bean
public WebSocketHandler myHandler() {
return new MyHandler();
}
}
等效的配置文件如下
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
https://www.springframework.org/schema/websocket/spring-websocket.xsd">
<websocket:handlers>
<websocket:mapping path="/myHandler" handler="myHandler"/>
<websocket:sockjs/>
</websocket:handlers>
<bean id="myHandler" class="org.springframework.samples.MyHandler"/>
</beans>
前面的例子是为了在 Spring MVC 应用程序中使用,应该包含在 DispatcherServlet 的配置中。然而,Spring 的 WebSocket 和 SockJS 支持并不依赖于 Spring MVC。在 SockJsHttpRequestHandler 的帮助下,集成到其他 HTTP 服务环境中是比较简单的。
在浏览器方面,应用程序可以使用 sockjs-client(版本 1.0.x)。它模拟了 W3C 的 WebSocket API,并与服务器通信,以选择最佳的传输选项,这取决于它所运行的浏览器。参见 sockjs-client 页面和浏览器支持的传输类型列表。该客户端还提供了几个配置选项 — 例如,指定要包括哪些传输。