Отправить JSON и блоб вместе - PullRequest
0 голосов
/ 04 июля 2018

Я пишу простой потоковый сервис.

Браузер. Откройте веб-сокет для сервера, затем другой браузер B откроет новый сокет для того же сервера.

Браузер A зарегистрирует видео по камере (API MediaRecorder) и отправит его на сервер.

Сервер транслирует это видео на другие подключенные браузеры.

У меня есть рабочая версия с Socket.IO, но я бы хотел сделать это в обычном JavaScript (WebSocket.Server на сервере Node.js и webSocket на клиенте).

Это проблема:

С помощью socket.io a можно написать что-то вроде этого:

  this.socket.emit('broadcast', {
    stream: new Blob(stream, {'type': `video/webm${MEDIA_CHARSET}`}),
    from: {id: this.socket.id}
  });

Поток поступает из медиа-рекордера -> приемник событий dataavailable

Но с нативным веб-сокетом я не могу отправить вставку BLOB-объекта в объект JSON, потому что веб-сокет может отправлять только строку или буфер массива.

Я пробовал много разных способов для отправки JSON и BLOB-объектов вместе, но ничего не работает.

Любая помощь?

Можно ли использовать только Engine.IO на стороне клиента, чтобы упаковать сообщение вместе с blob и JSON? Есть идеи по этому поводу?

1 Ответ

0 голосов
/ 04 июля 2018

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

На NPM можно выбрать несколько библиотек CBOR.

...