1、跨域问题
经查阅官方文档springwebsocket 4.1.5版本前默认支持跨域访问,之后的版本默认不支持跨域,需要设置
.setAllowedOrigins("*")
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler(), "/echo.do").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor());
// �������
registry.addHandler(myWebSocketHandler(), "/echo").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor())
.withSockJS();
}
2、*.do配置导致sockjs失效问题
web.xml中添加如下配置
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/sockjs/*</url-pattern>
</servlet-mapping>
websocket配置类中路径中不加sockjs
registry.addHandler(myWebSocketHandler(),
"/echo").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor())
.withSockJS();
.withSockJS();
前端调用时应加上sockjs
websocket = new SockJS("http://127.0.0.1:8080/WebSocketTest001
/sockjs/echo");
3、filter和servlet配置
web.xml中所有filter和servlet都需要添加如下配置项
<async-supported>true</async-supported>