【问题标题】:Which technology is the best to inform clients about server events immediately? [closed]哪种技术最适合立即通知客户端服务器事件? [关闭]
【发布时间】:2014-07-27 13:14:26
【问题描述】:

我要创建一个游戏。 起初它将是浏览器游戏。 以后会是APP(安卓、iPhone游戏)。

在服务器端我使用 nginx、apache、php。

==================

我需要通知在线玩家不同的事件。 例如:一个用户被另一个用户攻击。我应该立即通知他。

经典的 AJAX 不会出错。我读过一些关于彗星、网络套接字和其他技术的文章。 但我仍然无法理解,哪种解决方案最适合我? 请帮我做决定。

【问题讨论】:

    标签: sockets websocket connection connection-pooling comet


    【解决方案1】:

    WebSocket 应该是首选选项。这是一项得到广泛支持的技术。

    是持久的全双工连接,兼容所有主流浏览器http://caniuse.com/websockets

    【讨论】:

      【解决方案2】:

      也许你可以试试服务器发送事件。

      使用 SSE,在卸载页面、连接出现问题或手动关闭连接之前,将保持持续连接。

      每次发生某事,例如玩家受到攻击,您向客户端发送event 命令,然后客户端根据事件数据采取行动。

      虽然它并不适用于所有浏览器,但你可以尝试这种技术

      http://www.html5rocks.com/en/tutorials/eventsource/basics/ 进一步解释了 SSE 以及如何设置它

      【讨论】:

      • 任何版本的 Internet Explorer 都不支持 SSE
      • 我知道这一点。在 IE 中,可以使用长轮询。使用长轮询,连接保持打开状态,直到事件发生。然后关闭连接,并再次打开一个新的连接
      【解决方案3】:

      使用 WebSocket。使用它,您可以处理从客户端浏览器发送到服务器的数据(例如“用户 A 攻击用户 B”)和通过单个通道从服务器发送的数据。这可以节省服务器资源 - 并且拥有一种技术优于两种独立的技术(AJAX + 用于后台通道的技术)。

      此外,还有适用于 Android 和 iOS 的 WebSocket 库,因此您将来还可以在其中附加本地客户端。

      由于您需要一次将事件分发给多个客户端,因此在 WebSocket 之上使用诸如发布和订阅之类的东西是有意义的。

      我建议看看Crossbar.io - 它是一个开箱即用的发布和订阅的开源应用程序路由器。

      全面披露:我为 Crossbar.io 开源项目的创始人 Tavendo 工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-10
        相关资源
        最近更新 更多