Spring Websocket 遇到的坑

本文介绍如何解决Spring WebSocket的跨域问题及SockJS配置失效的问题,并提供了具体的配置示例。针对Spring WebSocket 4.1.5之后版本默认不支持跨域的情况,给出了设置允许所有源的方法。此外,还解决了因使用*.do配置导致SockJS失效的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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(); 
前端调用时应加上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>


http://download.youkuaiyun.com/detail/dong_19890208/9715594
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值