Websocket Dropped Frames?

时间:2018-06-15 19:23:54

标签: audio tcp websocket digital-ocean nexmo

试图通过websockets解决一个令人困惑的问题。我们正在使用Nexmo(Twilio竞争对手),它可以通过websockets双向传输呼叫音频。 Nexmo连接到我们的websocket服务器,并开始发送长度为640字节的16khz采样音频帧。

直到最近,websocket音频突然开始掉落一堆帧,导致音频缺口。

但最有趣的是以下内容:

  1. 当Nexmo直接连接到我们的digitalocean vps时,帧将被删除
  2. 当Nexmo通过ngrok隧道连接时,一切都重新开始工作
  3. 关于在哪里寻找真正的解决方案的任何想法都会很棒。

1 个答案:

答案 0 :(得分:0)

确保接收websocket流量的进程有一个单独的线程来处理这个流量......任何系统如果忙于其他任务就会丢弃流量...如果你的接收端有一些事件循环它维护在被传入的websocket中断抢占的同时,你将丢弃数据包

我做了一个项目,接收端是浏览器,它运行一个事件循环来执行音频渲染,同时还处理websocket流量 - 这不是一个好主意,因为不能让这个事件循环的关键部分得到抢先...我必须在浏览器端创建一个webworker进程来处理所有的websocket流量,然后填充一个循环的音频缓冲区...这个webworker被浏览器事件循环视为客户端,它现在呈现音频允许永远不会被传入的流量抢占...只有当浏览器事件循环达到其平静期时,它才会请求检索由webworker音频缓冲队列缓冲的另一批数据