我将 nginx 配置为像这样代理 websocket:
location /socket.io {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
客户端连接正常,但是当服务器发出通知时:
io.sockets.emit("update",data);
客户永远不会收到它:
var socket = io.connect("http://" + hostip + "/socket.io");
socket.on("update",function(data)
{
console.log("got update: " + data);
});
如果我绕过 nginx 一切都按预期工作:
var socket = io.connect("http://" + hostip + ":8000");
socket.on("update",function(data)
{
console.log("got update: " + data);
});
我错过了什么?顺便说一句,为什么绕过 nginx 不是违反单一来源策略?谢谢。