Stomp.js和Spring WebSocket与Web MVC项目集成

时间:2014-07-22 07:06:34

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

我有一个以'* .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错误。

有没有办法使用'.htm'扩展来启用Spring WebSocket和stomp js?

我无法删除此扩展程序,它会占用我当前的应用程序。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

您可以像这样添加多个servlet映射,并使.htm与&#34; / url&#34;一起使用。服务于新功能

<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>