首页 > 解决方案 > Nodejs环回TCP延迟1-2ms?

问题描述

在 NodeJS 中创建通过环回地址连接的 TCP 服务器/客户端时,对于简单的低数据消息,我得到 1-2 毫秒的往返时间。

我没有太多关于 Node 应该有多快的上下文,但它似乎应该小于 1ms,因为没有太多的操作正在进行,并且环回 ping 时间以微秒为单位。

我缺少的网络包中是否有一些缓冲,或者这种延迟是可以预期的?

服务器:

var net = require('net');

var server = net.createServer((socket) => {
  socket.setNoDelay();

  setInterval(()=>{
    socket.write(process.hrtime.bigint().toString());
  }, 1000)



  socket.on('data', (data)=>{
    console.log("Completed in: " + parseFloat((process.hrtime.bigint() - BigInt(data))/BigInt(1e3))/1000 + "ms")
  })

});

server.listen(1337, '127.0.0.1');

客户:

var net = require('net');

var client = new net.Socket();
client.connect(1337, '127.0.0.1', () => {
    console.log('Connected');

});

client.on('data', (data) => {
    client.write(data.toString());
});

client.on('close', () => {
    console.log('Connection closed');
});

标签: javascriptnode.jstcplatency

解决方案


这是预期的行为。我确信有优化解释器的方法,但是如果您的用例需要实时响应时间(<1ms),也许您应该将您的技术堆栈更改为可以更有效地使用 cpu、多线程、io 等的其他语言。


推荐阅读