socket.io 实现消息推送需要升级你的 http 协议

最近学习在 NodeJS ,写了一个博客,其中一个消息推送功能使用了 socket.io ,本地开发测试没有问题,但是部署到服务器,浏览器控制台会出现一个连接报错,但是推送功能却可以正常使用。想到本地开发使用的是 http 协议,服务器是 https 协议,会不会是证书需要其他配置,查看了官方文档,github issue ,Stack OverFlow ,都查不到资料,折腾了几天,最后在某博客查到,一般 Node 的项目都通过反向代理对外提供服务,是 nginx 反向代理需要加 header ,升级 http 协议版本,才知道原来排查问题的方向都错了,大概原因是 websocket 需要 http1.1 以上才支持,下面是需要添加的配置

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";               

nginx 参考资料 https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/

打赏作者

您将是第一位评论人!

提醒
avatar