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