为什么 sockJS 会向给定的 websocket url 路径添加'/info'



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

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

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

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

Spring web.xml servlet 映射代码:

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

有谁知道袜子JS在那里尝试什么,为什么?

这是 SockJS 协议的一部分,也是强制性的。此终结点由服务器实现,并传达服务器功能,例如支持的协议。请参阅 SockJS 协议的相关部分。

在这种情况下,我想您不仅需要针对此端点调整您的 servlet 映射,还需要针对可能传入的其他请求:websocket 的 HTTP UPGRADE 请求,SockJS 支持的基于 HTTP 的传输的所有其他请求。

相关内容

  • 没有找到相关文章

最新更新