Я пытаюсь реализовать способ, позволяющий передавать сообщения в «комнату». Моя текущая реализация
import * as ws from 'ws';
interface Connections {
[room: string]: ws[]
}
interface Message {
broadcastToRoom: string;
payload: any;
}
Номер определяется на стороне клиента в зависимости от того, по какому маршруту вы находитесь. Каждое сообщение, отправленное с этого маршрута, будет иметь структуру Message
.
Моя проблема заключается в том, как обновить объект соединениями на сервере, когда клиент меняет комнаты. До сих пор я придумал это, в котором хранится копия ws в каждой комнате, где был клиент.
let connections: Connections = {};
// handle case when it is initially undefined
if (!connections[message.broadcastTo]) {
connections = {
...connections,
[result.broadcastToRoom]: [ws]
};
} else {
connections = {
...connections,
[result.broadcastToRoom]: [...connections[result.broadcastTo], ws]
};
}