Чат, сокеты, редис.
Привет.
С нодой не работал. Но стоит задача сделать в проекте чат (nodejs + api). Весь проект сделан в связке aнгулар + апи (симфони 2). В чате нода - только для реалтайма. При коннекте сокета пробрасывается токен api и нода обращается к api, чтобы определить что это за юзер и определить нужные данные (его роль, в каких он группах). Данные сохраняются в редисе. Текущая задача - при коннекте/дисконнекте пользователя отправлять нужным пользователям (не всем), что такой то пользователь появился онлайн/отключился. Т.е. нужно по socket.id пользователей определить id юзера которому они соответствуют, а по id юзера уже определять нужно или нет слать уведомление. Так вот вопрос: как мне хранить соответствие socket.id => user.id ? Если я храню такую структуру в редисе - то при падении ноды и новом запуске все сокеты переоткрываются с новыми socket.id и получается, что в редисе остаются старые неактуальные записи в которых ключ - socket.id. Не хотелось бы, чтобы там копились мертвые данные. Как поступают в таких случаях? Спасибо.
|