Я пишу простой потоковый сервис.
Браузер открывает веб-сокет для сервера, затем другой браузер открывает новый сокет для того же сервера.
Браузер A регистрирует видео своей камерой (MediaRecorder API) и отправляет его на сервер.
Сервер транслировал это видео на другие подключенные браузеры.
У меня есть рабочая версия с Socket.IO, но я хотел бы сделать это на ванильном JavaScript (WebSocket.Server на сервере Node.js и webSocket на клиенте).
Это проблема:
С socket.io можно написать что-то вроде этого:
this.socket.emit('broadcast', {
stream: new Blob(stream, {'type': `video/webm${MEDIA_CHARSET}`}),
from: {id: this.socket.id}
});
Поток исходит из mediarecorder -> прослушиватель событий доступных данных
Но с собственным веб-сокетом я не могу отправить BLOB-объект, встроенный в объект JSON, потому что веб-сокет может отправлять только строку или буфер массива.
Я пробовал много разных способов, чтобы отправить JSON и большой двоичный объект вместе, но ничего не работает.
Любая помощь?
Можно ли использовать только Engine.IO на стороне клиента, чтобы упаковать сообщение с blob и JSON вместе? Есть идеи по этому поводу?