我正在开发一款多人HTML5游戏,该游戏利用jQuery轮询服务器的游戏状态。目前,我每隔2000ms用一个.ajax调用查询服务器,给人一种实时更新的印象。我真的不是在推动过多的数据...主要只是x / y位置和一些角色属性......在我的游戏实例中只有少数玩家活着。
服务器本身是一个共享托管服务器,我想在我开发这个游戏时尝试让我的CPU命中率尽可能低(并将其转移到更高功率的东西)。
这是我当前轮询服务器数据的方法。欢迎任何和所有建议,因为服务器加载对我来说是一个新的领域。
$.ajax({
type:'GET',
url:"controller.php?a=player-info",
dataType:'json',
success: function(data){
//parse data
}
});
....
setInterval(getPlayerInfo,2000);
我应该提到的一件事是,由于这是在共享服务器上,我不能有自由运行的进程来打开连接(即Node.js)。
答案 0 :(得分:3)
首先,你说你没有推得太多的数据。对我来说,你在拉。这与您可能知道的不完全相同。
您可以使用Websockets,长轮询或服务器发送的事件。 (Read this article)
答案 1 :(得分:1)
从你到目前为止所说的,目前尚不清楚CPU是否会成为你的瓶颈,但这里有一些建议可能会帮助你节省服务器资源。
考虑使用WebSockets而不是AJAX轮询。通过转向更加面向推送的架构,这可以消除大量服务无意义“无变化”请求的开销。