我正在用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 ms是否是正常的,以及是否有进一步减少延迟的方法。
编辑:我检查了传输,现在我使用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);发布于 2014-10-05 10:36:58
这个函数有一个问题。如果设置间隔为socket.on,则意味着要向同一个事件添加许多侦听器,这将增加每次迭代时的执行量。首先,将这个socket.on移到setinterval之外。你的代码是不是也被阻塞了?假设您的cpu没有被其他正在运行的东西所困扰,它可能是一些其他事件延迟了它。
发布于 2017-07-22 20:53:22
https://stackoverflow.com/questions/26118264
复制相似问题