为什么SockJS在给定的WebSocket URL路径中添加“/info”?

13
我想打开一个带有 "webapp/socket.do" 路径的 WebSocket 端口。当我使用 SockJS 并尝试通过代码启动调用时。
结果:

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

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

    stompClient.connect({}, ...

SockJS默认会在给定路径的末尾添加"/info"。我想知道为什么?这能被改变或预防吗?

如果在Spring MVC中使用,并且将URL模式映射到DispatcherServlet,如< url-pattern >*.do</url-pattern>,那么这将返回404错误。这是由于SockJS向给定的URL添加了"/info"字符串而被阻止。

Spring web.xml Servlet 映射代码:

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

有人知道sockJS在做什么以及为什么吗?

1个回答

7
这是SockJS协议的一部分,是必需的。该端点由服务器实现,并通信服务器的功能,例如支持的协议。请参见SockJS协议相关部分
在这种情况下,我猜您不仅需要适应此端点的servlet映射,还需要适应其他可能出现的请求:websocket的HTTP UPGRADE请求,所有其他请求SockJS支持的基于HTTP的传输

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接