使用技术
- nginx
- spring stomp websocket
遇到的问题
round 1
最开始连接死活建立不上,然后发现是使用了 nginx 的原因,需要配置一下,转发请求头
location /brms-scheduler {
proxy_pass http://localhost:6061;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $Host;
}
round 2
但是又遇到了新的问题,老是提醒 http session 拿不到
因为我需要做到对指定用户进行推送消息,所以在 websocket 握手阶段需要把 http session 拿到,然后根据 session 中的 user 生成 Principal。
我最开始猜测是因为 nginx 使用了负载均衡,导致 http session 在 A 服务器上,但是建立 websocket 是在 B 服务器上,然而并没有
round 3
最后找了半天还是 Stack Overflow 的老哥厉害,下面这段话给了我启发
于是我猜测是因为 nginx 转发太慢了导致 http session 还没创建完成,就开始进行 websocket 建立
其实开始的时候我也有过这个怀疑,但是我在本地执行就不会报错,现在回想起来是因为我本地运行速度太快了。。。。
抱着试一试的心态,我将建立 websocket 的函数延迟了 4 秒钟执行,结果就 OK 了!!!妈个鸡
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于