Можно ли испускать потоковый объект через socket.io?

Для моего приложения я передаю аудиоданные от клиента raspberry-pi в мой аудиосервис node.js через socket.io. Проблема в том, что для обработки аудио я передаю аудиопоток от клиента в моем сервисе к внешнему сервису. Затем эта внешняя служба передаст аудио потока результатов обратно в мою службу, а моя служба отправит его клиенту.

Так что мой поток приложений похож

Клиент ---socket.io-stream---> audio_service ---stream---> external_service

external_service -stream---> audio_service ---socket.io-stream---> client

Мои вопросы:

  1. Возможно ли, что когда клиент подключился к моей audio_service, моя audio_service инициирует соединение с external_service и отправит это соединение обратно клиенту через socket.io? Таким образом, клиент будет передавать потоковое аудио напрямую на external_service, используя возвращенное соединение, а не через audio_service.

  2. Если это возможно, возможно ли также, что, несмотря на то, что клиент передает аудио напрямую в external_service, он все равно отправит результат потока обратно в audio_service?

Большое спасибо за Вашу помощь

1 ответ

Невозможно отправить поток через Socket.IO так, как он настроен сегодня. Некоторые люди сделали некоторые надстройки, которые эмулируют потоки обычным способом RPC, но это не очень эффективно.

Лучшая библиотека, которую я знаю для этого, - Binary.JS. Это даст вам потоки, мультиплексированные через одно двоичное соединение WebSocket. К сожалению, Binary.js некоторое время не поддерживался, но все еще работает.

Другие вопросы по тегам