В настоящее время у меня есть серверное приложение WebSocket, которое находится в противоположном состоянии без сохранения состояния.Я хотел бы «лишить гражданства», так как считаю это проблемой и правильным решением.
Вкратце, всякий раз, когда клиент подключается, он должен аутентифицироваться или его соединение прерывается.Подключениям, прошедшим проверку подлинности, присваивается идентификатор и они связаны с пользователем, скажем, у меня есть Джон, который подключился из 3 мест, и его идентификатор пользователя равен 5
users = {
5: {
name: "John",
connections: [1, 3, 5]
}
}
Тогда яесть функция, которая передает сообщение конкретному пользователю
function broadcast(userId, message) {
users[userId].connections.forEach(cId => {
connections[cId].send(message);
});
}
Если бы я переместил свой users
в какое-то другое хранилище памяти, такое как redis или что-то еще, как бы я узнал, какой кластерный подчиненный является фактическим соединением?сидя, а кроме того, как бы я передавал сообщение всем соединениям Джона, если они находятся в разных дочерних процессах?Я имею в виду, очевидно, что я не получаю что-то, ws
кажется, что дизайн с состоянием?