【问题标题】:Differences between websockets and long polling for turn based game server回合制游戏服务器的 websockets 和长轮询之间的差异
【发布时间】:2015-10-21 07:17:01
【问题描述】:

我正在为 iOS 游戏编写服务器。游戏是回合制的,服务器需要向客户端推送信息的唯一时间就是通知对手的动作。

我很好奇是否有人可以评论使用 WebSockets 和长轮询之间的性能和易于实现的差异。另外,如果我使用 WebSockets,我应该只使用它来接收信息并为其他所有内容发送 POST 请求,还是应该通过 WebSocket 进行所有通信?

此外,如果我也有兴趣制作 Web 客户端,在 WebSockets 和长轮询之间还有什么需要考虑的吗?

【问题讨论】:

  • 您也可以使用推送通知来通知客户端新数据。我相信比您考虑的两种解决方案更有效(电池方面)。
  • 如果用户仍在应用中,这将如何工作?
  • 当您收到推送通知时,您也会在应用程序中收到通知。
  • 你解决了吗?如果是,你能告诉我们怎么做吗?

标签: ios web-services rest websocket long-polling


【解决方案1】:

对于其他可能想知道的人,它可能取决于事件之间的典型交互持续多长时间?

Websocket: 任何超过几十秒的时间,我认为保持 websocket 打开并不是特别有效(更不用说如果应用程序失去焦点,IIRC 无论如何都会断开连接)

长轮询:这迫使在服务器负载(现在有什么新东西?现在怎么样?...)和知道发生变化的速度之间进行权衡。

推送通知:虽然这在技术上实施起来可能更复杂,但它确实是 IMO 的最佳解决方案,因为:

  • 几乎可以在事件发生后立即发送(和传递)通知
  • 没有standby 服务器负载(来自打开的 websocket 或“现在怎么样?”查询) - 随着您的使用基础的增长,这一点尤其重要
  • 您可以覆盖如果用户在应用内时收到通知会发生什么

【讨论】:

    【解决方案2】:

    我应该只用它来接收信息和发送 POST 请求吗? 其他的

    是的,您应该只使用 WebSockets 来获取实时更新,并使用 REST API 来做 BREAD 的事情。

    所有的通信都应该通过 WebSocket 吗?

    简短回答:不,

    查看 PieSocket 的这篇文章,了解有关 WebSocket 最佳用例的更多信息。 What Is WebSocket: Introduction And Usage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 2013-07-17
      • 2020-11-05
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多