我有以下情况:
本地PC通过蓝牙以50.000比特/秒接收数据样本。数据通过UDP发送到某个服务器。服务器又通过网页/ JavaScript和Web套接字将数据分发到处理数据的连接浏览器。最终,来自浏览器的结果通过UDP传递回本地PC。
到目前为止,我正在尝试严格的本地设置,即所有内容都在一台具有四核CPU的计算机上运行。我在node.js和golang中编写了服务器代码。在这两种情况下都存在重大数据丢失,即即使只连接了一个Web套接字客户端,服务器也不会成功接收通过UDP发送的每个样本。
造成损失的瓶颈在哪里?事实是一切都在本地机器上运行吗?可能是网络插座带宽太小了吗? WebRTC我会更好吗?或者它完全是另一回事?
答案 0 :(得分:2)
很难说你案件的确切位置在哪里。
但是UDP是一种不可靠的协议(可以丢失数据),而WebSockets(使用TCP)却不是。这意味着消息可能由读取或写入UDP数据的进程丢失。例如,这样的分组丢失可能是因为这些应用程序通常读取数据太慢或者因为套接字缓冲区太小而不能处理由进程调度或类似引起的读/写速度的波动。