3

次のようにWebSocketをプロキシするようにnginxを構成しました:

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 のバイパスがシングル オリジン ポリシー違反にならないのはなぜですか? ありがとう。

4

1 に答える 1

6

var socket = io.connect(location.host);ブラウザだけで試してください。私はあなたがパスを望んでいないと思います/socket.io

于 2013-05-24T23:44:50.377 に答える