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

Lih*_*sak 8 websocket sockjs spring-websocket java-websocket

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

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

    stompClient.connect({}, ...
Run Code Online (Sandbox Code Playgroud)

默认情况下,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>
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*zel 6

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

在这种情况下,我猜你需要调整你的servlet映射,不仅适用于这个端点,还需要调整其他可能出现的请求:HTTP UPGRADE对websocket的请求,以及SockJS支持的所有其他基于HTTP的传输请求.