Как определить, покинул ли абонент канал Redis PUB / SUB? - PullRequest
0 голосов
/ 22 октября 2018

У меня запущено несколько экземпляров приложения.В каждом экземпляре пользователи общаются друг с другом в разных экземплярах.Мне нужно показать, если пользователь перешел в автономный режим.Это не произойдет, если экземпляр падает.Пока экземпляр активен, я могу получить событие потери соединения через веб-сокет для этого сокета и сообщить другим экземплярам.Но этого не произойдет, если экземпляр приложения потерпит крах.

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете использовать CLIENT LIST для достижения цели.Эта команда выводит информацию обо всех клиентах, подключающихся к Redis.Ниже приведен пример информации о клиенте, отображаемой CLIENT LIST:

id=87 addr=127.0.0.1:63950 fd=10 name= age=3 idle=3 flags=P db=0 sub=3 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe
  1. Если клиент прерывает или закрывает соединение, Redis удалит его из списка клиентов, и вы НЕ МОЖЕТЕ получить его addr из результата команды CLIENT LIST.
  2. Если клиент подписывается / подписывается на один или несколько каналов / шаблонов, поле cmd информации о клиенте будет подписка или psubscribe , а поле sub / psub - это количество каналов / шаблонов, на которые он подписан.
  3. Если клиент отменяет подписку / punsbuscription все каналы / шаблоны и отправляет другую команду в Redis, поле cmd информации о клиенте будет последней командой, отправленной в Redis, и sub / psub поле будет 0.

Чтобы узнать, какой абонент ушел, вы можете периодически вызывать команду CLIENT LIST и проверять информацию о каждом подключающемся клиенте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...