Javascript disconnet事件不存在';t在nginx和x2B中开火;socket.io+;xhr轮询
我尝试通过nginx代理node.js、socket.io和xhr轮询流量 然后Socket.io不会触发“断开”事件 然而,贝娄条件工作良好Javascript disconnet事件不存在';t在nginx和x2B中开火;socket.io+;xhr轮询,javascript,node.js,nginx,socket.io,Javascript,Node.js,Nginx,Socket.io,我尝试通过nginx代理node.js、socket.io和xhr轮询流量 然后Socket.io不会触发“断开”事件 然而,贝娄条件工作良好 直接连接到Node.js端口,无需nginx代理 将传输从xhr轮询切换到websocket 我的版本是贝娄 nginx:1.4.4 node.js:0.10.24 socket.io:0.9.15 我的nginx配置文件设置如下 server { listen 80; server_name localhost;
- 直接连接到Node.js端口,无需nginx代理
- 将传输从xhr轮询切换到websocket
- nginx:1.4.4
- node.js:0.10.24
- socket.io:0.9.15
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_read_timeout 300;
proxy_connect_timeout 300;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
}
我怎样才能解决这个问题?我错过什么了吗?
提前感谢:)
此外,我发现了新的情况,出现了我的问题 我的问题的结果取决于下面
・ Chrome @ Mac OS X
・ Aquos Phone(Android Brower, Android 4.0.4)
port 80 ⇒ NG
port 3000 ⇒ OK
・ Gallaxy S(Android Brower, Android 4.2.2)
・ iPhone 5(Safari, iOS 7)
port 80 ⇒ NG
port 3000 ⇒ NG
- “OK”是“可以实时触发断开连接事件”,“NG”是“不能触发断开连接事件”
- “端口80”使用nginx,“端口3000”使用node.js
- Trasport仅为xhr轮询
- Gallaxy S和iPhone 5与websocket兼容
io.connect('/', {
'sync disconnect on unload': true
});
(第一个参数'/'
在您的配置中可能不同)
您可以找到详细信息。Zub,谢谢您的回复!!但是我已经在客户端设置了选项…@TatsuyaKida尝试删除
Upgrade
和Connection
头。据我所知,只有WebSocket才需要,而不是XHR