【发布时间】:2018-05-19 10:28:56
【问题描述】:
我的 socket.io 有一个大问题,导致我的实时游戏无法玩。
我希望我的 node.js 服务器每 20 毫秒向每个连接的客户端(每个套接字)发送一次数据
但我注意到客户端不是每 20 毫秒接收一次,而是每 100 到 200 毫秒一次接收几个,甚至更多。这使得游戏完全无法玩(非常大的延迟)
在本地效果很好。
你能帮帮我吗? 这是我发送数据的函数的一段代码(服务器端):
function sendData()
{
playersList.forEach( (player) =>
{
let data = [];
// code which add data to "data" variable
socketsList[player.id].emit('refreshGame', JSON.stringify(data));
});
setTimeout(sendData, 20);
}
sendData();
【问题讨论】:
-
我的经验更依赖于代码复杂性和优化、noOfPlayers 和服务器规范。所以首先要尝试让你的代码轻量,比如删除冗余、刷新内存等。
-
如果删除在我的函数
sendData()和emit('refreshGame', '');中生成数据的所有代码,并且如果我删除在客户端重新加载画布的代码(只是socket.on('refreshGame', console.log('new Date().getTime());
标签: node.js sockets websocket socket.io real-time