UDP和Web套接字导致数据丢失

我有以下情况:</ p>

本地PC通过以下方式接收数据样本 以50.000位/秒的速度传输蓝牙。 数据通过UDP发送到某些服务器。 服务器进而通过网页/ JavaScript和Web套接字将数据分发到处理数据的连接的浏览器。 最终,来自浏览器的结果将通过UDP传递回本地PC。 </ p>

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

瓶颈造成的损失? 事实是否一切都在本地计算机上运行? Web套接字带宽是否太小? 使用WebRTC会更好吗? 还是完全是其他东西?</ p>
</ div>

展开原文

原文

I have the following scenario:

A local PC receives data samples via bluetooth at 50.000 bits/sec. The data is send via UDP to some server. The server in turn distributes the data via web page/JavaScript and web sockets to connected browsers where the data is processed. Eventually, the results arriving from the browsers are passed on via UDP back to the local PC.

So far I'm experimenting with a strictly local setup, i.e. everything runs on one machine which has a CPU with four cores. I've written server code in both node.js and golang. In both cases there is a significant data loss, i.e. not every sample that is send via UDP is successfully received by the server even in case only one web socket client is connected.

Where is the bottleneck causing the loss? Is it the fact that everything runs on a local machine? Could it be that the web socket bandwidth is too small? Would I be better of with WebRTC? Or is it be something else entirely?

dpw30157
dpw30157 我只能说,UDP不保证数据包到达。从现在看来,没有什么异常,您的网络上还有很多其他流量吗?这很容易导致UDP连接中的更多数据包丢失。
4 年多之前 回复
doumou5109
doumou5109 “使用WebRTC,我会更好吗?”如果您不知道应用程序的用途,用户之间的连接方式(p2p完全是一个选项吗?)以及预期的用户群,我们就无法告诉您。将是。
4 年多之前 回复
duangutian1426
duangutian1426 假设没有网络问题,丢失消息意味着您没有足够快地阅读它们。没有任何代码,我们就无法真正给您答案。
4 年多之前 回复

1个回答



很难说您所遇到的瓶颈在哪里。 </ p>

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

展开原文

原文

It is hard to say where exactly the bottleneck in your case is.

But UDP is an unreliable protocol (can loose data) while WebSockets (which uses TCP) is not. This means that the messages are probably lost by a processes which reads or writes the UDP data. Such packet loss might for example occur because these apps are too slow in general to read the data or because the socket buffers are too small to handle fluctuations in reading/writing speed caused by process scheduling or similar.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问