Я пишу простой потоковый сервис.
Браузер. Откройте веб-сокет для сервера, затем другой браузер 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? Есть идеи по этому поводу?