当使用带有Socket.IO的dgram(UDP)时,数据报以什么速度发送?(节点)

Sta*_*tec 6 udp websocket node.js socket.io

我正在使用socket.io和dgram节点库通过节点将UDP消息从一个程序发送到浏览器.
代码看起来就像socket.io示例

var dgram = require("dgram");
var dServer = dgram.createSocket("udp4");
dServer.bind(12345, '0.0.0.0');
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
  dServer.on("message", function (msg) {
     socket.send('message', msg);
  });
});
Run Code Online (Sandbox Code Playgroud)

我的问题是数据报最终被发送到浏览器的速度有多快?它们是以TCP速度,Web套接字速度(我理解为较慢)或UDP速度(我理解在实时通信方面更快)发送的.

此外,在这个例子中io永远监听端口80(意味着它只能以http/tcp速度接收内容)或者它只是监听建立套接字连接然后可以停止监听(并让套接字连接接管)

Ste*_*ich 4

UDP、TCP 和 WebSocket“数据包”的速度是相同的(例如线速),但它们在开销和可靠性方面有所不同。

  • WebSocket 是现有 HTTP 连接内的隧道,因此实际上 TCP 的开销更大。但他们使用现有的方式通过 NAT 路由器和防火墙建立隧道。
  • TCP 具有可靠性保证,例如,不会丢失数据包且不会重复。TCP 需要初始 3 次握手,但这只是一次连接,而不是每个数据块。
  • UDP 是一劳永逸的,如果需要的话,您需要在上面实现自己的可靠性。除此之外,我不确定浏览器是否会本机接受您的 UDP 数据包,至少在 RTP 上下文之外(例如 WebRTC)。它可能适用于 Java 和 Flash。