我想在我的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>
这?