为什么 sockJS 会在给定的 websocket url 路径中添加 '/info'
Why does sockJS add a '/info' to a given websocket url path
我想用 "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>
)时,这将 return 出现 404 错误。它被阻止是因为 sockJS 添加到给定 url.
的“/info”字符串
Spring web.xml servlet映射代码:
<servlet-mapping>
<servlet-name>dispatch-servlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
有人知道 sockJS 在那里尝试什么吗?为什么?
这是 SockJS 协议的一部分,并且是强制性的。
此端点由服务器实现并传达服务器功能,例如支持的协议。见 relevant part of the SockJS protocol.
在那种情况下,我想您不仅需要为这个端点调整您的 servlet 映射,还需要为可能进入的其他请求调整您的 servlet 映射:对 websocket 的 HTTP 升级请求,对 HTTP-based transports supported by 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>
)时,这将 return 出现 404 错误。它被阻止是因为 sockJS 添加到给定 url.
Spring web.xml servlet映射代码:
<servlet-mapping>
<servlet-name>dispatch-servlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
有人知道 sockJS 在那里尝试什么吗?为什么?
这是 SockJS 协议的一部分,并且是强制性的。 此端点由服务器实现并传达服务器功能,例如支持的协议。见 relevant part of the SockJS protocol.
在那种情况下,我想您不仅需要为这个端点调整您的 servlet 映射,还需要为可能进入的其他请求调整您的 servlet 映射:对 websocket 的 HTTP 升级请求,对 HTTP-based transports supported by SockJS 的所有其他请求。