在我当前的项目中,我发现在移动设备上使用带有 socket.io 和 node.js 的 websockets 存在问题。移动设备在间隔内处理套接字消息似乎存在问题。
我将其简化为最小的场景:
服务器(最小的 express.js 服务器)以特定的时间间隔向客户端发送消息:
setInterval(function(){
socket.emit('interval');
}, 500);
客户端只是弄乱收到消息之间的时间并显示它们:
socket.on('interval', function (data) {
timeElement.html(new Date() - startTime);
startTime = new Date();
});
在desktop
(使用 Chrome)上,消息之间产生的时间非常稳定,在515 ms
. 所以它就像一个 15 毫秒的延迟,但消息间隔是一致的。
在一个mobile device
(我正在使用带有 Chrome 的 Galaxy Nexus)上,时间会随着between 400 and 600 ms
任何一种方式出现更多的极端峰值而变化。
我想使用这样的间隔作为游戏回合指示器,这个问题导致移动设备上的玩家移动很多滞后和不均匀。