nginx配置websocket代理转发 & java实现websocket

本文详细介绍了如何配置nginx以支持WebSocket代理转发,特别指出前端需要在$proxy_read_timeout时间内保持心跳以维持会话。同时,讨论了nginx upstream的命名规范,以防与tomcat8.5.x以上版本冲突。内容还涵盖了Spring和JDK两种方式实现WebSocket,并提供了相关参考资料。
nginx配置
        location ~* /websocket {
           proxy_pass http://web-servers;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
           proxy_read_timeout 3600s;
        }
注意要点
  • 前端需要在$proxy_read_timeout 时间内主动与后端保持心跳(ping)来维持会话,使其在用户无操作时不断开
  • nginx upstream 用连接符“-”,而不是下划线,防止 tomcat8.5.x 以后的版本出现问题
Error during WebSocket handshake: Unexpected response code: 400
一些思考过程
讨论要点:
1、身份:客户端/服务端、客户端可能是浏览器也可能是后端;
2、模式:点对点/广播、给指定批量通过业务过滤的部分用户发消息;
3、几个概念:cookie、http session id、websocket userId、websocket session id;
4、疑难:websocket会话长时间保持(nginx代理转发 + 前端定时轮询ping)、权限问题(是否需要登录、http session过期是否disconnect websocket session,即websocket是否connect是否依赖于http session的是否存在)、集群环境服务端主动推送指定的客户端(已建立的会话连接可能不在本地当前节点)
参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值