Как обработать переключение комнаты в websocket с помощью nodejs и ws - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь реализовать способ, позволяющий передавать сообщения в «комнату». Моя текущая реализация

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]
  };
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...