Как проверить, что сокет жив (подключен) в socket.io с несколькими узлами и socket.io-redis

Я использую socket.io с несколькими узлами, socket.io-redis и nginx. Я следую этому руководству: http://socket.io/docs/using-multiple-nodes/

Я пытаюсь сделать: в функции (серверный сайт) я хочу запросить сокетки, что этот сокет подключен или отключен

Я пробовал io.of('namespace').connected[socketid], он работает только для текущего процесса (это означает, что он может проверять только текущий процесс).

Кто-нибудь может мне помочь? Спасибо за продвижение.

Ответ 1

Как я могу проверить, что сокет жив (подключен) с socketid, я попробовал namespace.connected [socketid], он работает только для текущего процесса.

Как вы сказали, отдельный процесс означает, что сокеты зарегистрированы только в процессе, к которому они сначала подключились. Вы должны использовать socket.io-redis для соединить все ваши узлы вместе, и что вы можете сделать, это broadcast событие каждый раз, когда клиент подключается/отключается, так что каждый node имеет обновленный список всех клиентов в режиме реального времени.

Ответ 2

Отъезд здесь

как упоминалось выше, вы должны использовать socket.io-redis, чтобы заставить его работать с несколькими узлами.

var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));