gpt4 book ai didi

node.js - Socket.IO 中的高延迟

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:44 27 4
gpt4 key购买 nike

我正在使用 Socket.IO 开发游戏。我发现即使在本地主机上运行,​​延迟也非常高,即 250 毫秒。这正常吗?

这是我用来计算延迟的代码:

function startLatencyPoller(socket,callback)
{
setInterval(function() {
var startTime = Date.now();
socket.emit('ping');
socket.on('pong', function() {
latency = (Date.now() - startTime) /2; //round trip time / 2
callback(latency);
});
}, 2000);

}

我的问题是,即使在本地网络上,Socket.IO 的延迟高达 250 毫秒是否正常,是否有办法进一步减少延迟。

编辑:我检查了传输方式,现在我正在使用 websocket 作为传输方式。

编辑:按照以下答案编辑代码后问题已得到解决(删除监听器避免它们堆积):

setInterval(function() {

var startTime = 0;
var socketFunction = function() {
latency = (Date.now() - startTime) /2; //round trip time / 2
callback(latency);
socket.removeListener('pong',socketFunction);
};

socket.on('pong', socketFunction);
startTime = Date.now();
socket.emit('ping');


}, 5000);

最佳答案

此功能有问题。如果您 setinterval a socket.on ,则意味着您要向同一事件添加许多监听器,这将增加每次迭代的执行速度。因此,首先,将 socket.on 删除到 setinterval 之外。你的代码不是也在某个地方阻塞了吗?假设您的 CPU 没有被其他正在运行的东西所困扰,则可能是其他一些事件延迟了它。

关于node.js - Socket.IO 中的高延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com