aci*_*dic 75 rest web-services long-polling websocket ios
我正在为iOS游戏编写服务器.游戏是基于回合的,并且服务器将信息推送到客户端的唯一时间是通知对手的移动.
我很好奇是否有人可以评论使用websockets和长轮询之间的性能和易于实现的差异.另外,如果我使用websockets,我应该只使用它来接收信息并发送其他所有的POST请求,还是应该通过websocket进行所有通信?
另外,如果我有兴趣创建一个Web客户端,那么在websockets和长轮询之间还有什么需要考虑的吗?
Tha*_*rif 149
什么是长轮询?
传统轮询技术的一种变体,允许模拟从服务器到客户端的信息推送.通过长轮询,客户端以与普通轮询类似的方式从服务器请求信息.
一旦信息可用(或在适当的超时之后),就会向客户端发送完整的响应.然后,客户端通常会立即从服务器重新请求信息,这样服务器几乎总会有一个可用的等待请求,它可以用来传递数据以响应事件.
在web/AJAX上下文中,长轮询也称为Comet编程.
Websockets怎么样?
WebSockets提供客户端和服务器之间的持久连接,双方可以使用它始终开始发送数据.
结论:
如果需要实时通信,您可以选择websockets.
但在Long Polling中:
Web客户端和Web服务器之间保持连接,以便在服务器有新信息时将其推送到客户端.然后该请求就完成了.然后在客户端和服务器之间进行新请求,然后等待来自服务器的另一个更新.由于HTTP/1.1保持活动,相同的TCP连接通常在多个请求中持续打开.
参考和其他考虑因素:
什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?
对于其他可能想知道的人来说,这可能取决于事件之间典型的交互持续多长时间?
Websocket:任何超过几十秒的时间,我不认为保持 websocket 打开特别有效(更不用说 IIRC,如果应用程序失去焦点,它无论如何都会断开连接)
长轮询:这迫使服务器负载(现在有什么新的吗?现在怎么样?...)和了解发生变化的速度之间进行权衡。
推送通知:虽然这在技术上实现起来可能更复杂,但在我看来,这确实是最好的解决方案,因为:
standby服务器负载(无论是来自开放的 websockets,还是“现在怎么样?”查询)——随着您的使用基础的增长,这一点尤其重要| 归档时间: |
|
| 查看次数: |
41907 次 |
| 最近记录: |