可以通过 Java 配置启用 SockJS:
@Configuration@EnableWebSocketpublic class WebSocketConfig implements WebSocketConfigurer {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(myHandler(), "/myHandler").withSockJS();}@Beanpublic 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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/websockethttps://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 页面和浏览器支持的传输类型列表。该客户端还提供了几个配置选项 — 例如,指定要包括哪些传输。
