Websocket упал фреймы?

Попытка решить запутанную проблему с потоковой передачей звука через веб-сокеты. Мы используем Nexmo (конкурент Twilio), который обеспечивает двунаправленную потоковую передачу звука вызова через веб-сокеты. Nexmo подключается к нашему серверу websocket и начинает отправлять дискретизированные аудиокадры 16 кГц длиной 640 байт каждый.

Все работало отлично до недавнего времени, когда звук через веб-сокет внезапно начинал сбрасывать группы кадров, что приводило к пропускам звука.

Но самое интересное следующее:

  1. Когда Nexmo подключается напрямую к нашему виртуальному серверу digitalocean, кадры сбрасываются
  2. Когда Nexmo подключается через туннель ngrok, все снова начинает работать

Любые идеи о том, где искать реальное решение, были бы потрясающими.

ты решил проблему? Я не могу придумать никакого решения. У меня нет высокой загрузки ЦП или памяти, но Nexmo внезапно перестал работать, поэтому я больше не слышу вызова моего веб-приложения Azure ... ngrok иногда работает, иногда нет

sk2andy 24.08.2018 15:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
261
1

Ответы 1

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

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

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