【问题标题】:Why does sockJS add a '/info' to a given websocket url path为什么 sockJS 会在给定的 websocket url 路径中添加“/info”
【发布时间】:2016-05-05 06:28:30
【问题描述】:

我想用“webapp/socket.do”路径打开一个 websocket 端口。当我使用 SockJS 并尝试通过代码发起调用时

    var socket = new SockJS('/webapp/socket.do');
    stompClient = Stomp.over(socket);

    stompClient.connect({}, ...

默认情况下,SockJS 会在给定路径的末尾添加一个“/info”。我想知道为什么?这可以改变或防止吗?

当将它与 Spring MVC 一起使用并且具有到 DispatcherServlet 的 url 模式映射(如 < url-pattern >*.do</url-pattern>)时,这将返回 404 错误。由于 sockJS 将“/info”字符串添加到给定的 url,它被阻止了。

Spring web.xml servlet 映射代码:

<servlet-mapping>
    <servlet-name>dispatch-servlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

有谁知道 sockJS 在那里尝试什么以及为什么?

【问题讨论】:

    标签: websocket spring-websocket sockjs java-websocket


    【解决方案1】:

    这是 SockJS 协议的一部分,并且是强制性的。 该端点由服务器实现并传达服务器功能,例如支持的协议。请参阅relevant part of the SockJS protocol。

    在这种情况下,我想您不仅需要针对此端点调整 servlet 映射,还需要针对可能进来的其他请求调整 servlet 映射:websocket 的 HTTP UPGRADE 请求,HTTP-based transports supported by SockJS 的所有其他请求。

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多