【问题标题】:Data loss with UDP and web socketsUDP 和 Web 套接字的数据丢失
【发布时间】:2016-05-12 18:31:04
【问题描述】:

我有以下场景:

本地 PC 通过蓝牙以 50.000 位/秒的速度接收数据样本。数据通过 UDP 发送到某个服务器。服务器依次通过网页/JavaScript 和网络套接字将数据分发到处理数据的连接浏览器。最终,来自浏览器的结果通过 UDP 传递回本地 PC。

到目前为止,我正在尝试严格的本地设置,即一切都在一台具有四核 CPU 的机器上运行。我已经在 node.js 和 golang 中编写了服务器代码。在这两种情况下都存在大量数据丢失,即即使仅连接一个 Web 套接字客户端,服务器也不会成功接收通过 UDP 发送的每个样本。

造成损失的瓶颈在哪里?是不是所有东西都在本地机器上运行?会不会是 web socket 带宽太小了?使用 WebRTC 会更好吗?还是完全是另外一回事?

【问题讨论】:

  • 假设没有网络问题,丢失消息意味着您阅读它们的速度不够快。没有任何代码,我们无法真正给您答案。
  • "WebRTC 会更好吗?" 如果您不告诉您应用程序的目的是什么,用户将如何相互连接,我们无法告诉您(p2p 是一种选择吗? ) 以及您预期的用户群将是什么。
  • 我只能说,UDP 不保证数据包的到达。现在看起来,没有什么不寻常的,您的网络上是否还有很多其他流量?这很容易在 UDP 连接中导致更多的数据包丢失。

标签: node.js go websocket udp webrtc


【解决方案1】:

很难说您的案例的瓶颈到底在哪里。

但是 UDP 是一个不可靠的协议(可以丢失数据),而 WebSockets(使用 TCP)则不是。这意味着消息可能会被读取或写入 UDP 数据的进程丢失。例如,可能会发生这种丢包,因为这些应用程序通常太慢而无法读取数据,或者因为套接字缓冲区太小而无法处理由进程调度或类似情况引起的读/写速度波动。

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 2020-06-23
    • 2019-06-05
    • 2019-05-25
    • 2013-03-18
    • 2018-04-02
    • 2019-08-16
    • 2015-01-28
    相关资源
    最近更新 更多