Можно ли испускать потоковый объект через 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
Мои вопросы:
Возможно ли, что когда клиент подключился к моей audio_service, моя audio_service инициирует соединение с external_service и отправит это соединение обратно клиенту через socket.io? Таким образом, клиент будет передавать потоковое аудио напрямую на external_service, используя возвращенное соединение, а не через audio_service.
Если это возможно, возможно ли также, что, несмотря на то, что клиент передает аудио напрямую в external_service, он все равно отправит результат потока обратно в audio_service?
Большое спасибо за Вашу помощь
1 ответ
Невозможно отправить поток через Socket.IO так, как он настроен сегодня. Некоторые люди сделали некоторые надстройки, которые эмулируют потоки обычным способом RPC, но это не очень эффективно.
Лучшая библиотека, которую я знаю для этого, - Binary.JS. Это даст вам потоки, мультиплексированные через одно двоичное соединение WebSocket. К сожалению, Binary.js некоторое время не поддерживался, но все еще работает.