@Scryppi

Как хранить и получать информацию онлайн ли пользователь в node js express и react?

Делаю сайт. react js + express js Надо при просмотре пользователя или при списке пользователей показывать онлайн ли сейчас юзер или кто из списка онлайн. Как это организовать?

Я додумался только до - открывать соединение websocket с статическим id(который не меняется и зависит от юзера) и брать информацию window.addEventListener online, offline и передавать ее по сокету, когда получаю ее делать запись в таблице юзера в mongo db постоянно.

Либо же просто при каждом клике пользователя делать put запрос, передавая поле isOnline true, которое через 5 минут станет снова false если его не продлить.

Есть ли какие-то элегантные и давно отлаженные решения? Можете поделиться ссылкой на статью\библиотеку и как это обычно решается. Может делается через redis?(я его не использовал)
  • Вопрос задан
  • 743 просмотра
Решения вопроса 1
Как вы и написали - websocket. Создаете обработчик события beforeunload и отправляете на сервер соответствующее сообщение. Но есть проблема, если пользователь закроет браузер, то это событие не сработает. Для этого установите на сервере время отклика, допустим 5 секунд, тогда через 5 секунд, если отклика от клиента не будет, на сервере можно будет вызвать нужный метод для установки пользователю статуса оффлайн.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы