频繁的Ajax呼叫(每秒2-3次)

时间:2015-07-05 17:28:17

标签: php jquery ajax post get

我正在创建一个游戏,用户正在移动主对象(左/右/上/下)。每当他移动它时,他都会向服务器发出请求,因此PHP会将播放器的位置放在地图上。

游戏速度非常快,用户应该每秒移动2-3次,经过196-200请求后我通常会收到错误,并且无法连接到服务器大约3-5分钟,这不是好。

考虑到我可以完全访问控制面板并且无法更改请求频率,我该如何解决此问题?

1 个答案:

答案 0 :(得分:1)

有时,您的HTTP服务器或防火墙会阻止这些请求以防止DDoS攻击。

要解决该问题,您可以使用Websocket(https://en.wikipedia.org/wiki/WebSocket)代替ajax调用。

对于每个ajax调用,浏览器将执行以下步骤:

请求1:

- Open Connection
- Do Request
- Get Any Response
- Close Connection

请求2:

- Open Connection
- Do Request
- Get Any Response
- Close Connection

但是如果你使用websockets,你可以:

- Open Connection
- Do Request
- Do Request
- Do Request
- Do Request
- Do Request
- Do Request
- Get Any Response
- Do Request
- Do Request
- Do Request
- (...)

关闭步骤仅在您更改页面,关闭浏览器或强制通过API关闭Websocket连接时执行。

该解决方案仅针对这些场景创建,并且有一些HTML游戏引擎使用多人游戏解决方案(例如http://www.isogenicengine.com/

对于PHP,您可以使用Ratchet(http://socketo.me/)或PHP-websockets(https://github.com/ghedipunk/PHP-Websockets)实现。

我希望它有所帮助