未收到Socket.io事件(nginx反向代理,服务器到客户端)

时间:2017-02-03 14:50:01

标签: node.js nginx socket.io reverse-proxy

我有一个在nginx反向代理下运行的nodejs socket.io应用程序。

我的nginx配置如下:

location ~ ^/(online|socket\.io) {
        proxy_pass http://localhost:8888;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

这似乎有效,我的nodejs应用程序可以很好地获取连接。在服务器端socket.io我有以下内容:

io.of('/online').on('connection', function(socket){

这似乎工作正常,并且'连接'事件正在解雇

当我尝试从服务器向客户端发出事件时出现问题:

socket.join("users");
io.sockets.in("users").emit("got_users",users);

' got_users'事件未被客户接收。在客户端,我有以下内容:

a4e.socket=io.connect('http://www.example.com/online');

这似乎工作正常,但随后:

a4e.socket.on("got_users",function(online_users){

这并没有拿起" got_users"事件,无论我尝试什么。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我终于弄明白了,接下来的一行:

io.sockets.in("users").emit("got_users",users);

应替换为:

io.of("/online").in("users").emit("got_users",users);

然后它有效。