Как синхронизовать Socket.io со всеми устройствами?
Как можно синхронизовать Socket.io со всеми устройствами при авторизации пользователя?
Авторизация построена по jwt токену.
Предположение такое: раз на клиенте я могу оперировать только самим jwt токеном, то разумно было бы создать комнату с таким идентификатором и сделать emit этого токена на сервер, в котором пушить его в объект вида: { userid: { token, timestamp }, userid: { token, timestamp } , ... }
Сделать условие раз в минуту отправлять ping запрос по сокетам для проверки, что пользователь все еще находится на сайте и обновлять timestamp. И параллельно запустить setInterval для удаления всех мертвых пользователей, от которых не приходит ping больше минуты.
Ну а при необходимости отправки данных этому пользователю проверять его существование в этом объекте, если существует - отправляем данные в эту комнату.
Но есть вопросы: Безопасно ли это? Есть ли ограничения по длине имени комнаты, ибо длина токена немаленькая? Разумный ли вообще такой подход и не придумываю ли я очередной велосипед, который уже реализован в виде какой-нибудь удобной библиотеки?
как только клиент отвалится, его клиент коннект будет завершен и сработает соответствущее событие
пинг понг сокет ио делает без твоей помощи
про всякие сетинтервалы прям улыбнуло, у тебя случаем твой сервер по памяти не утекает?