5

我正在开发一个多人 HTML5 游戏,它使用 jQuery 轮询服务器以获取游戏状态。目前,我每 2000 毫秒使用 .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)的连接。

4

2 回答 2

3

首先,您是说您没有推送太多数据。对我来说,你在拉。这与您可能知道的不完全相同。

您可以使用 Websockets、长轮询或服务器发送的事件。(阅读这篇文章

于 2012-11-15T20:41:58.547 回答
1

从您目前所说的情况来看,尚不清楚 CPU 是否会成为您的瓶颈,但这里有一些建议可以帮助您节省服务器资源。

考虑使用WebSockets而不是 AJAX 轮询。通过转向更加面向推送的架构,这可以消除服务毫无意义的“没有任何改变”请求的大量开销。

您可能还想使用memcached或其他一些基于 RAM 的数据存储层(例如Redis)来避免 DB 瓶颈。

于 2012-11-15T20:37:24.787 回答