node.js - 将 dgram (UDP) 与 Socket.IO 一起使用时,数据报的发送速度是多少? ( Node )

标签 node.js websocket udp socket.io

我正在使用 socket.io 和 dgram Node 库通过 Node 将 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);
  });
});

我的问题是数据报最终发送到浏览器的速度是多少?它们是以 TCP 速度、Web 套接字速度(据我了解较慢)还是 UDP 速度(据我了解在实时通信方面较快)发送的。

另外,在这个例子中是 io 永久监听端口 80(意味着它只能以 http/tcp 速度接收东西)或者它只是监听建立套接字连接然后可以停止监听(并让套接字连接占用结束)

最佳答案

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

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

关于node.js - 将 dgram (UDP) 与 Socket.IO 一起使用时,数据报的发送速度是多少? ( Node ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649492/

相关文章:

Java UDP 数据报包

java - 将 Python 转换为 Java

javascript - Nestjs如何控制缓存?

javascript - Bluebird promise 订单问题

java - 泰鲁斯 wss ://websocket not passing through squid proxy

javascript - Apache 服务器上 WebSocket 的开销

c - C语言的udp聊天服务器

node.js - 在 Gatsby 中使用请求

node.js - 授予服务器创建文件夹的权限

Azure Bot 服务无法在代理后面的 Web 聊天中工作