Как реализовать сложную схему long-polling (или websocket, в сути вопроса это неважно) node js?
Всем привет. Есть необходимость создать сложную систему long-polling сервера на ноде. Лезет в голову такая схема
1. Сервер менеджер (к нему поступают запросы на регистрацию клиенту и выдачу ему самого незагруженного сервера long-polling)
2. Сами процессы long-polling серверов (их может быть сколько угодно)
И возникает проблема. Допустим такая картина, на сайт зашли user1, user2, user3, user4 и user5. И соответственно они подключились к выданным long-polling серверам. user1 создал событие - его надо разослать user3, user5; user2 создал событие - его надо разослать user4, user1.
Вопрос: как узнать к какому именно серверу подключены юзеры, которым нужно отправлять события, либо где это грамотнее всего хранить. Или вообще как реализовать long-polling на node js на нескольких процессах (возможно серверах) с целью распределения нагрузки?
- лишнее звено, модуль cluster встроенный в node вполне себе нормально решает задачу балансировки в пределах одной машины, если машин несколько - то балансировка через nginx
И возникает проблема
- Redis pub/sub или ZeroMQ или RabbitMQ или еще что-то в этом духе
насчет pub/sub redis. Просто при создании каждого процесса long-polling'ов он подписывается на события через redis. А при событии каком-либо он отправляет просто всем процессам это событие, а уже сам процесс разбирается есть ли у него тот клиент в подключении, которому адресовано событие? Я правильно понял?