Каков наилучший способ отслеживать, какие пользователи находятся в сети в nodejs? - PullRequest
2 голосов
/ 08 марта 2012

Итак, я разрабатываю (больше играю) игру в реальном времени в node.js, я также использую Redis и Sockets.io. У меня есть игроки, которые создают лобби и присоединяются к нему (что-то вроде чата перед игрой, где вы можете поговорить с игроками и выбрать настройки игры). Клиент написан на HTML / CSS / JS. В любом случае, я хочу иметь возможность сообщать, когда игроки отключаются от лобби, обновлять количество игроков, присоединившихся к интерфейсу (и имен игроков, к которым присоединяются).

Два варианта, о которых я подумал:

  1. Использование функции тайм-аута значения ключа redis для удаления определенного поля, если оно не обновляется в течение x времени. Затем я бы попросил хост проверить наличие этого поля, чтобы проверить наличие DC. Я действительно задаюсь вопросом, если это крайне неэффективно, так как многие пользователи потенциально будут играть, поэтому будет плохо иметь много значений тайм-аута в Redis, а также многие другие пользователи, опрашивающие эти поля.

  2. Я мог бы использовать sockets.io on ('отключить', ..) для обновления поля. Однако я не уверен, что это событие сработает, если, например, пользовательский компьютер зависнет?

В любом случае, я открыт для любых других идей!

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Socket.io должно хватить. Вы можете настроить его на использование пульса для проверки связи с сокетом и проверки его работоспособности. Если пользовательский компьютер зависает, он, по сути, не сможет реагировать на эти импульсы, вызывая отключение.

Чтобы проверить это, вы можете настроить Socket.io на использование пульса, а затем подключиться через браузер на другом компьютере. В то время как в браузере в консоли проходит бесконечный цикл. Вызывает это для симуляции замораживания.

3 голосов
/ 08 марта 2012

Socket.io имеет «сердцебиение», чтобы проверить соединение еще живым. Время ожидания сердцебиения по умолчанию составляет 15 с. Вы можете прочитать больше о настройке в этой вики . Если сердцебиение не срабатывает (пользовательский ПК зависает), то socket.io выдаст событие «отключить».

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