为什么SockJS会在给定的WebSocket URL路径中添加'/info'呢?

8 浏览
0 Comments

为什么SockJS会在给定的WebSocket URL路径中添加'/info'呢?

我想要打开一个带有“webapp/socket.do”路径的WebSocket端口。当我使用SockJS并尝试通过以下代码发起调用时:\n

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

\nSockJS默认会在给定路径的末尾添加“/info”。我想知道为什么会这样?是否可以更改或阻止这个行为?\n当在使用Spring MVC时,将url模式映射到DispatcherServlet,如< url-pattern >*.do,这将返回404错误。这是因为SockJS向给定的url添加了“/info”字符串而被阻止。\nSpring web.xml的servlet映射代码如下:\n


dispatch-servlet
*.do

\n是否有人知道SockJS在尝试什么以及为什么这样做?

0
0 Comments

SockJS为了实现一些功能需求,需要在给定的WebSocket URL路径中添加'/info'。这是SockJS协议的一部分,是必需的。服务器实现了这个端点,并且通过该端点与客户端进行通信,包括传递服务器的能力,比如支持的协议。

如果需要适应这种情况,不仅需要为该端点调整Servlet映射,还需要为其他可能出现的请求进行适配:WebSocket的HTTP UPGRADE请求,以及SockJS支持的其他基于HTTP的传输方式的请求。

具体的解决方法可以参考SockJS协议的相关部分,以及SockJS客户端所支持的浏览器传输方式。

代码示例:

// Servlet映射配置
@WebServlet("/info/*")
public class SockJsServlet extends HttpServlet {
    // 处理/info请求的逻辑
    // ...
}
// 处理WebSocket请求的逻辑
// ...

以上是关于为什么SockJS在给定的WebSocket URL路径中添加'/info'的原因以及解决方法的整理。这样的设计是为了实现SockJS协议的要求,并且确保服务器和客户端能够正确地进行通信。

0