w_b_x
@w_b_x

Как зафиксировать отключение пользователя от комнаты Socket.io?

Здравствуйте.

Есть проблема:
Используется связка NodeJS и Socket.IO. Есть две страницы, которые подключаются к socket-серверу. Одна просто подключается, а вторая подключается и подписывается на события комнаты. Проблема в том, что я хочу по-разному обработать выход с двух этих страниц, если закрытие вкладки/disconnect происходит на обычной странице, то ничего не делать, а если на странице с подпиской к комнате, то исполнять код (аля устанавливать статус оффлайн в бд юзера).

Каким обазом понять, что человек именно отключился от комнаты, а не просто вышел?
  • Вопрос задан
  • 719 просмотров
Решения вопроса 1
@vshvydky
Ты загоняешь клиента в комнату на сервере командой join, создай объект в который будешь пихать иды подключившихся сокетов и если нужно, иды комнат, куда его завел. При срабатывании дисконнект события проверяй этот объект, делай записи в бд и удаляй из него устаревшие данные.
Когда сокет клиент отключается от сервера его автоматом выкидывает из всех комнат, так что скорее всего ты уже не получишь информацию, в каких комнатах он был на момент отключения, хотя тут можно не гадать а просмотреть в дебаге объекты сокетов , найти где они хранят информацию о состоянии комнат и сделать соответствующие выводы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы