代码之家  ›  专栏  ›  技术社区  ›  Lihkinisak

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

  •  12
  • Lihkinisak  · 技术社区  · 9 年前

    我想打开一个带有“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将“/info”字符串添加到给定的url,所以它被阻止。

    弹簧网。xml servlet映射代码:

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

    有人知道sockJS在那里尝试什么吗?为什么?

    1 回复  |  直到 9 年前
        1
  •  6
  •   Brian Clozel    9 年前

    这是SockJS协议的一部分,并且是强制性的。 该端点由服务器实现,并与服务器功能(如支持的协议)通信。请参见 relevant part of the SockJS protocol .

    在这种情况下,我想您不仅需要为此端点调整servlet映射,还需要调整可能出现的其他请求:websocket的HTTP UPGRADE请求、 HTTP-based transports supported by SockJS .