如何允许websocket|sockjs路径'socket.do/info'当Spring MVC url-pattern映射"*.do"



我想在我的Spring MVC应用程序中使用SockJS,STOMP打开一个websocket连接。我遇到的问题与这个问题类似。但答案对我不起作用。我从这里学习了教程。正如这里所说,我的应用程序在调用 webapp/socket.do 映射时向浏览器返回 404。JavaScript代码如下:

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

我在 web.xml 文件中的 servlet 映射如下:

    `<servlet-mapping>
    <servlet-name>dispatch-servlet</servlet-name>
    <url-pattern>*.do</url-pattern>
     </servlet-mapping>`

现在我尝试将 url 映射从"*.do"更改为"/",并使用此处建议的其他资源 url 模式,@Gofier这 ("/") 打开了连接,但没有正确呈现一些资源。(网页无法正确加载)。

有什么方法我仍然可以使用"*.do"并同时允许与"/info"进行 websocket 连接?请提出解决此问题的任何可能方法。谢谢。

更新:显示控制器代码和配置文件

@Configuration 
@EnableScheduling 
@EnableWebMvc 
@ComponentScan(basePackages="com.package") 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/socket.do").withSockJS();
    }
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/queue/", "/topic/");
        registry.setApplicationDestinationPrefixes("/app");
    }
}

控制器代码:

 @MessageMapping("/hello")
 @SendTo("/topic/greetings")
 public Greeting greeting(HelloMessage message) throws Exception {
     Thread.sleep(3000); // simulated delay
     return new Greeting("Hello, " + message.getName() + "!");
 }

怎么样...

<servlet-mapping>
    <servlet-name>dispatch-servlet</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>/hello/*</url-pattern>
</servlet-mapping>

这?

相关内容

  • 没有找到相关文章

最新更新