【问题标题】:Spring Websocket and 404 status on connectionSpring Websocket和404连接状态
【发布时间】:2014-03-19 22:24:36
【问题描述】:

在 Tomcat 7.0.50 下运行的 Spring MVC 4.0.2 项目中,我正在尝试使用简单的代理和 sockjs stomp 端点实现 Spring Websocket,遵循official reference。因此,在 contextConfigLocation(DistpacherServlet 属性)中,我添加了一个值“websocket-config.xml”,其中包含:

>     <websocket:message-broker application-destination-prefix="/app" >
>           <websocket:stomp-endpoint path="/monitor">
>             <websocket:sockjs />
>           </websocket:stomp-endpoint>
>           <websocket:simple-broker prefix="/topic"/>
>     </websocket:message-broker>

当我启动 Tomcat 时,在 Eclipse 控制台(catalina 日志)中,出现行

  • 正在初始化 ExecutorService 'clientInboundChannelExecutor'
  • 正在初始化 ExecutorService 'clientOutboundChannelExecutor'
  • 正在初始化 ExecutorService 'messageBrokerSockJsScheduler'
  • 将 URL 路径 [/monitor/**] 映射到 [class org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler] 类型的处理程序

在jsp页面我放代码

。 . . .
var socket = new SockJS("monitor");
var stompClient = Stomp.over(socket); . . . .

不幸的是,当我从 Chrome (v32) 加载 jsp 页面时,我收到此错误:

加载资源失败:服务器响应状态为 404(未找到)

http://localhost:8080/(ProjectName)/monitor/info

显然我是在本地进行此测试,然后所有其他 webapp 资源都可以通过 http://localhost/(ProjectName) 正确访问。

怎么了?

**** 2014 年 2 月 20 日更新 我尝试关注this已解决的堆栈问题,该问题建议将Tomcat8用于Spring Websocket,不幸的是它不起作用

【问题讨论】:

    标签: spring websocket sockjs


    【解决方案1】:

    由于对 /monitor/info 的请求,服务器端是否有任何日志输出? DispatcherServlet 本身是如何映射的?我希望从上面的内容中得到“/”。

    SockJS 端点基本上是在 Spring MVC 中映射的 URL(带有 SimpleUrlHandlerMapping),因此请尝试使用其他 Spring MVC 映射的控制器方法。并打开日志记录,是否有过滤器或其他返回 404 的东西?

    【讨论】:

    • 太棒了! :)) 我花了很多时间试图解决这个问题,你很快就解决了。我的错误是使用了 Dispatcher url-pattern "*.do",所以 Servlet 没有捕获 websocket 客户端请求。我在“/”中更改了它,(但我必须为资源文件添加其他虚假 url 模式,正如 @Gofier here 所建议的那样,它起作用了!我爱你 :) 非常感谢
    • 很高兴它现在可以工作了 :) 请记住,为了提供资源文件,我们还有一个资源处理机制。见docs.spring.io/spring-framework/docs/current/…
    • 你能扩展你的答案吗?您是说调度程序 servlet 还需要处理 SockJS 端点的请求吗?
    • Paul,是的,SockJS 端点是一个与 Spring MVC 映射并由 Spring MVC 提供服务的 HTTP 端点。请参阅 SockJsHttpRequestHandler。
    • 您好!我有同样的问题,但不幸的是很久没有使用 websockets,我想知道你在“/”中改变什么是什么意思?你能告诉我你必须做些什么来解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多