У меня есть приложение чата nodejs, в котором несколько клиентов подключаются к общей комнате чата с помощью socketio. Я хочу масштабировать это на несколько узловых процессов, возможно на разных машинах. Однако клиенты, которые подключаются к одной и той же комнате, не гарантируют попадание в один и тот же процесс узла. Например, пользователь 1 нажмет на процесс узла A, а пользователь 2 нажмет на процесс узла B. Они находятся в одной комнате, поэтому, если пользователь 1 отправляет сообщение, пользователь 2 должен его получить. Каков наилучший способ сделать это, так как их соединения управляются разными процессами?
Я думал о том, чтобы подключить процессы узла к redis. Это, по крайней мере, решает проблему, заключающуюся в том, что процесс A узнает , что в комнате есть другой пользователь, пользователь 2, но он все еще не может отправить пользователю 2, поскольку процесс B контролирует это соединение. Есть ли способ зарегистрировать обратный вызов «значение изменено» для redis?
Я нахожусь в серверной среде, где я не могу управлять маршрутизацией или балансировкой нагрузки.