Как проверить, что сокет жив (подключен) в 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 }));