【十万火急】用的nodejs 的web socket IO 挂在外网的时候出问题了。
前端后端都是socket.io的库 nginx代理映射 看到@alsotang 的回复闪出了灵光。 最终发现的问题居然不是socket的问题,而是pm2 应用进程数的问题, 原因是我本地测试只用了一个进程,也就是 -i 1,挂在外网 -i 2 。这样问题就来了。 为什么多了一个进程就不行了。
11 回复
有用反向代理么
@RavenZZ 有用nginx代理
@heixiaoshan Nginx开启 支持websocket了么
@RavenZZ 怎么开?可是前后端用的都是socket.io。 下面这个吗? location …socket/io{ }
5楼正解,其实就是把 Upgrade 和 Connection 这两个 header 转发过去。
@RavenZZ 这个我配置过一个。不管用好像。
@klesh 代码不是我写的,我先排查一下问题,看看还可能存在的问题是什么
@RavenZZ 长见识了。
感觉 nginx 放在外围的话一般有两个问题 一是对于 websocket 协议的支持 二是需要把同一个用户定位到同一个进程上
@alsotang 找到问题所在了,看到你的第二句回复。哈哈