Enabling SockJS

    可以通过 Java 配置启用 SockJS:

    1. @Configuration
    2. @EnableWebSocket
    3. public class WebSocketConfig implements WebSocketConfigurer {
    4. @Override
    5. public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    6. registry.addHandler(myHandler(), "/myHandler")
    7. .withSockJS();
    8. }
    9. @Bean
    10. public WebSocketHandler myHandler() {
    11. return new MyHandler();
    12. }
    13. }

    等效的配置文件如下

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:websocket="http://www.springframework.org/schema/websocket"
    4. xsi:schemaLocation="
    5. http://www.springframework.org/schema/beans
    6. https://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/websocket
    8. https://www.springframework.org/schema/websocket/spring-websocket.xsd">
    9. <websocket:handlers>
    10. <websocket:mapping path="/myHandler" handler="myHandler"/>
    11. <websocket:sockjs/>
    12. </websocket:handlers>
    13. <bean id="myHandler" class="org.springframework.samples.MyHandler"/>
    14. </beans>

    前面的例子是为了在 Spring MVC 应用程序中使用,应该包含在 DispatcherServlet 的配置中。然而,Spring 的 WebSocket 和 SockJS 支持并不依赖于 Spring MVC。在 SockJsHttpRequestHandler 的帮助下,集成到其他 HTTP 服务环境中是比较简单的。

    在浏览器方面,应用程序可以使用 sockjs-client(版本 1.0.x)。它模拟了 W3C 的 WebSocket API,并与服务器通信,以选择最佳的传输选项,这取决于它所运行的浏览器。参见 sockjs-client 页面和浏览器支持的传输类型列表。该客户端还提供了几个配置选项 — 例如,指定要包括哪些传输。