Socket.io/WebSockets不断重新连接 – 问题与Nginx的代理configuration?

我在我的Node.js应用程序中使用Socket.IO。 今天我第一次部署它,我注意到我的sockets不断重新连接。 我有“连接”和“断开”logging到相应套接字事件的控制台,这是结果:

更重要的是,似乎轮询技术正在使用,当我的浏览器确实足够现代,使用WebSockets – 所以我相信这是一个configuration问题。 当我在开发中运行Node.js时,WebSockets工作正常,中间没有代理

这是我的Nginxconfiguration,它作为我的Node.js服务器的代理:

upstream reader.oliverjash.me { server 127.0.0.1:3000; } server { listen 80; server_name reader.oliverjash.me; access_log /var/log/nginx/reader.oliverjash.me.access.log; error_log /var/log/nginx/reader.oliverjash.me.error.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://reader.oliverjash.me; proxy_redirect off; } } 

我相信的是:

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

在启用WebSockets方面很重要(按照这个参考/教程 )。 在我添加这些之前,WebSockets完全不能使用代理。 现在我似乎得到了投票,这总比没有好。

我的Nginx版本是1.4.0稳定。

原来问题是因为我已经聚集了我的节点应用程序。 添加了Redis作为Socket.IO的内存存储,解决了我所有的问题! http://adamnengland.wordpress.com/2013/01/30/node-js-cluster-with-socket-io-and-express-3/