【问题标题】:Frequent Ajax calls (2-3 times per second)频繁的 Ajax 调用(每秒 2-3 次)
【发布时间】:2015-07-05 17:28:17
【问题描述】:

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

游戏太快了,用户应该每秒移动2-3次,在196-200请求后我通常会出错,大约3-5分钟无法连接到服务器,这不是不错。

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

【问题讨论】:

    标签: php jquery ajax post get


    【解决方案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) 实现。

    希望对你有帮助

    【讨论】:

    • 非常感谢,我会试试的。
    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多