@vetsmen

Как синхронизовать Socket.io со всеми устройствами?

Как можно синхронизовать Socket.io со всеми устройствами при авторизации пользователя?
Авторизация построена по jwt токену.

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

Но есть вопросы: Безопасно ли это? Есть ли ограничения по длине имени комнаты, ибо длина токена немаленькая? Разумный ли вообще такой подход и не придумываю ли я очередной велосипед, который уже реализован в виде какой-нибудь удобной библиотеки?
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
как только клиент отвалится, его клиент коннект будет завершен и сработает соответствущее событие
пинг понг сокет ио делает без твоей помощи
про всякие сетинтервалы прям улыбнуло, у тебя случаем твой сервер по памяти не утекает?
Ответ написан
Ваш ответ на вопрос

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

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