События Socket.io не получены (обратный прокси-сервер nginx, сервер-клиент)

У меня есть приложение nodejs socket.io, работающее под обратным прокси-сервером nginx.

Моя конфигурация 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 ответ

Я наконец понял это, следующая строка:

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

Должен быть заменен на:

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

Тогда это работает.

Другие вопросы по тегам