websocket和基于回合的游戏服务器的长轮询之间的区别

我正在写一个iOS游戏的服务器。 游戏是基于回合的,并且服务器需要向客户推送信息的唯一时间是通知对手的移动。

我很好奇,如果任何人都可以评论使用websockets和长轮询之间的执行差异的性能和易用性。 另外,如果我使用websocket,我应该只用它来接收信息,并发送POST请求的一切,或者所有的通信都应该通过websocket?

另外,如果我也有兴趣做一个networking客户端,还有什么需要额外考虑websockets和长轮询?

什么是长轮询?

在这里输入图像说明 传统轮询技术的变体,可以模拟从服务器到客户端的信息推送。 通过长轮询,客户端以类似于普通轮询的方式从服务器请求信息。

  • 如果服务器没有任何可用于客户端的信息,而不是发送空的响应,则服务器保存请求并等待一些信息可用。
  • 一旦信息变得可用(或者在适当的超时之后),则将完整的响应发送到客户端。 客户端通常会立即重新从服务器请求信息,以便服务器几乎总是有一个可用的等待请求,可以用来响应事件提供数据。

    在web / AJAX上下文中,长轮询也被称为Comet编程。

那么Websockets呢?

在这里输入图像说明 WebSocket提供客户端和服务器之间的持续连接,双方可以随时使用它开始发送数据。

  • 客户端通过称为WebSocket握手的过程build立一个WebSocket连接。 此过程从客户端向服务器发送常规HTTP请求开始。
  • 此请求中包含升级标头,通知服务器客户端希望build立WebSocket连接。

结论

如果需要实时通信,您可以select使用websockets。

但在长期投票中:

Web客户端和Web服务器之间的连接保持打开状态,以便服务器获得新信息时可以将其推送到客户端。 那个请求就完成了。 然后在客户端和服务器之间build立一个新的请求,然后等待来自服务器的另一个更新。 由于HTTP / 1.1保持活动,相同的TCP连接通常在多个请求中持续开放。

参考和其他注意事项:

PubNub长时间轮询和sockets – 手机电池寿命

什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?

长时间投票在目标-C

Websocket介绍

Websocket与长轮询

在应用程序中使用Websockets

Websocket应用程序

PushTechnology-长轮询

    Interesting Posts