Когда пользователь подключается к серверу через веб-сокет.Соединения сокетов с состоянием, сервер, к которому он подключен, является единственным сервером, который сможет обмениваться данными через этот сокет.
Я создаю чат.Существует n серверов, каждый из которых содержит n пользователей / сокетов, подключенных к нему.
В чате есть функция случайного подключения, которая связывает вас со случайным пользователем, выбранным из всех серверов.
В настоящее время использование PUB / SUB через Redis для связи между серверами.
- Является ли Redis PUB / SUB наилучшим способом управления связью между серверами, когда большая часть связи может быть между двумя серверами, а не от 1 до N.
пользователь x находится на сервере A, пользователь y находится на сервере B. Все N серверов подписаны на канал «сообщения».х хочет отправить сообщение у.Сервер А публикуется на канале «сообщения».Все N серверов светятся, когда это нужно только серверу B.Могу ли я отслеживать, к какому серверу подключен партнер x, y, с помощью Redis pub / sub и отправлять только на этот сервер. Broadcast vs Emit?
- Как разработать протокол партнерствадо пользователей?Сначала опишите проблему ...
A -> Req (нужен партнер для пользователя x)
B <- Req </p>
C <- Req </p>
B -> Предложение (пользователь y доступен для пользователя x)
C -X (никто не доступен, ничего не делает)
A <- Предложение (обработать предложение) </p>
C <- Предложение (не имеет пользователя x, ничего не делает) </p>
A -> Принять (назначает партнера пользователя x пользователем y и сообщать другому серверу)
B (сбой сервера больше не существует, проблема)
Как сервер A узнал бы, что сервер B с y вышел из строя / или ушел.И следует продолжать поиск онлайн-пользователя.Сейчас он просто сидит, думая, что он связал своего пользователя x с другим активным пользователем.