基于回合的游戏服务器中 websockets 与长轮询的区别

我正在为一款 iOS 游戏编写服务器。游戏是基于回合的,服务器只需要通知客户端对手的移动信息。

我很好奇是否有人能够评论使用 WebSocket 和长轮询之间的性能差异和实现难易程度。另外,如果我使用 WebSocket,我应该只使用它来接收信息并发送 POST 请求,还是所有的通信都应该通过 WebSocket 进行?

Additionally, is there anything extra to consider between WebSockets and long polling if I am interested in also making a web client?

62111 次浏览

对于任何其他人谁可能想知道,它 可以取决于多长时间的典型相互作用之间的事件?

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

Long polling: This forces a trade-off between server load (anything new now? how about now? ...) and speediness of knowing a change has occurred.

Push notifications: While this may be technically more complex to implement, it really would be the best solution IMO, since:

  • 通知几乎可以在事件发生后立即发送(和传递)
  • 没有 standby服务器负载(无论是从开放的 websockets,还是“现在怎么样?”查询)-这是特别重要的,因为您的使用基础的增长
  • 你可以 重写发生什么,如果一个通知进来,而用户是在应用程序

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

Yes, you should use WebSockets to fetch real-time updates only, and REST APIs to do BREAD stuff.

所有的交流都应该通过 WebSocket 进行吗?

简短的回答是: 不,

Check this article from PieSocket for more information about the best use cases for WebSockets. 什么是 WebSocket: 介绍和使用