【问题标题】:Stomp.js and Spring WebSocket integration with Web MVC projectStomp.js 和 Spring WebSocket 与 Web MVC 项目的集成
【发布时间】:2014-07-22 07:06:33
【问题描述】:

我有一个以 '*.htm' 扩展名运行的 spring 项目,我们已将其绑定在 web.xml 文件中。

 <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
   <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
   </servlet-mapping>

现在我想为聊天应用程序集成 Spring WebSocket 和 stomp js,但这里的问题是 stomp.js 正在将请求发送到没有 '.htm' 扩展名的服务器。 因此,我在每个请求(信息或其他 xhr)中都收到 404 错误。

有什么方法可以启用 Spring WebSocket 和 stomp 带有 '.htm' 扩展名的 js 吗?

我无法删除此扩展程序,它将拖累我当前的应用程序。

【问题讨论】:

    标签: spring spring-mvc stomp sockjs spring-websocket


    【解决方案1】:

    在websocket url中添加前缀,效果很好。

    js:

    var socket = new SockJS("/websocket_demo/myapp/ws");
    

    web.xml DispatchServlet 映射:

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

    【讨论】:

      【解决方案2】:

      您可以像这样添加多个 servlet 映射,并保持 .htm 与“/url”一起工作以提供新功能

      <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/url</url-pattern>
      </servlet-mapping>
      

      如果你使用的是 Servlet 2.5,你可以直接使用

      <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>/url</url-pattern>
      </servlet-mapping>
      

      【讨论】:

        猜你喜欢
        • 2014-06-23
        • 2012-05-23
        • 2020-09-18
        • 2018-03-07
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 2015-02-01
        相关资源
        最近更新 更多