Перейти к содержанию

Interface: TransportDriver

Абстрактный Transport Driver API

Описывает все, что способно отправлять сообщения и подписываться на входящие сообщения (например udp сокет). Вопреки некоторым сложностям, связанным с невозможностью отслеживать получения сообщений, это самый простой подход к двунаправленной отправке сообщений, который может быть имплементирован с помощью любого вида сокетов, http+sse и т.д.

Пример

// Серверная сторона
async (transport: TransportDriver) => {
  const subscription = transport.on({ room: '323-123-45' }, ({ topic }, data) => {
    expect(topic).toBe('hello');
    expect(data).toStrictEqual({ woo: 'hoo' });
  });

  // имплементация

  transport.off(subscription);
};

// Клиентская сторона
async (transport: TransportDriver) => {
  await transport.send({ room: '323-123-45', topic: 'hello' }, { woo: 'hoo' });
};

Методы

off

off(id, data?): void

Отменяет существующую подписку.

Не отрабатывает, если с данным id нет связанной подписки. Если текущий подписчик ждет сообщения, можно использовать необязательное поле data? для решения этой проблемы.

Параметры

Имя Тип Описание
id string идентификатор подписки, возвращается после создания
data? unknown (опционально) данные сообщения к отправке для коллбэка текущего подписчика

Возвращает

void


on

on(filter, callback): string

Подписывается на определенные сообщения

Возможна подписка на одни и те же сообщения дважды, что может быть использовано в продвинутых стратегиях фильтрации сообщений

Параметры

Имя Тип Описание
filter Partial<TransportMeta> фильтр входящего сообщения
callback TransportCallback callback, вызывающийся когда сообщение будет соответствовать фильтру

Возвращает

string

идентификатор подписки, может быть использован для отмены подписки


send

send(meta, data): Promise<void>

Отправка сообщения с помощью транспорта

Этот метода ожидает, пока сообщение будет отправлено (но не дожидается получения) и отдает в ответ возможна ли его отправка. Можно определить пункт назначения и способ отправки.

Параметры

Имя Тип Описание
meta TransportMeta идентификаторы сообщения
data unknown данные сообщения

Возвращает

Promise<void>