События 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);
Тогда это работает.