WebSocket配置中会遇到的一些问题

今天来整理一些我在工作中配置上遇到的一些问题。

Q1使用nginx代理后不能访问。报错WARNING:tornado.access:400 GET /ws (127.0.0.1) 0.79ms  或者连接失败后会反复发起连接请求。

需要在nginx的location中新增如下配置

# websocket

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection “upgrade”;

Q2 跨域问题(spring websocket)

经查阅官方文档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();

}

Q3 *.do配置导致sockjs失效问题(spring websocket)

web.xml中添加如下配置

dispatcher

/sockjs/*

websocket配置类中路径中不加sockjs

registry.addHandler(myWebSocketHandler(), “/echo”).setAllowedOrigins(“*”).addInterceptors(new HandshakeInterceptor())

.withSockJS(); 

前端调用时应加上sockjs

websocket = new SockJS(“http://127.0.0.1:8080/WebSocketTest001/sockjs/echo”);

Q4 一个websocketsession对应多个session的情况 

这是由于尽管每次都能保证有一个websocketsession存在,但客户端没连接一次tomcat都建立一个链接,除非你在请求头里添加cookie:JSESSIONID=xxxxxx

Q5 能收到客户端消息,后台也显示发送,但是客户端收不到 

这个问题经我个人观察和猜测,应该是websocketsession没有成功关闭或者成功关闭但是和一个websocketsession对应多个session有关,因为我把上面的问题解决了之后,这个问题也没出现过了。

如果你们觉得自己或者团队弄WebSocket这块比较麻烦,或者开发成本高,周期长的话,可以考虑用三方的。

我这里只推荐个免费的 GoEasy 你们自己可以去看看。

希望这些问题的解决方法对大家有帮助

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/901869.html

(0)
上一篇 2025年1月4日 02:35:49
下一篇 2025年1月4日 02:37:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信