正如上所解释的nginx 的网站我使用了 nginx 的这些设置来将 websocket 代理到 NodeJS 服务器:
location /socket.io/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
一切正常,socket.emit() / socket.on() 互相发送消息;直到我发送一条相当大的短信(26 kB html)。
- NodeJS 没有收到这条大消息(所以我猜问题出在 nginx 端)
- nginx日志没有错误
- 一旦客户端发送了这条大消息,NodeJS 将停止从该客户端接收 socket.io 的心跳。
我究竟做错了什么?
是否有我不知道的 nginx 设置?
找到的“解决方案”是使用haproxy在 nginx 和 NodeJS 之间分割 tcp 流。
它不是最佳的,因为它在我们的堆栈中添加了另一个程序,但它完成了工作。
在我看来,nginx websocket 支持还远未达到生产就绪状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)