使用AJAX无法获得的HTML5 Web套接字有什么用?

时间:2011-03-15 20:47:33

标签: ajax html5 websocket

Ian Hickson says

  

我期待iframe沙盒功能   如果它对开发者来说将是一个巨大的福音   起飞。我个人的最爱   功能可能是Web套接字   API,允许双向   与服务器通信以便   你可以实现游戏,聊天,   遥控器,等等。

使用AJAX无法获得的网络套接字有什么用?它只是方便,还是以某种方式更有效率?服务器是否可以将数据发送到客户端,而不必等待消息以便它可以响应?

2 个答案:

答案 0 :(得分:4)

是的,关键是服务器能够将数据推送到客户端。目前,在没有Flash / Silverlight / Java / ActiveX的情况下模拟双向通信采用两种解决方法之一:

  • 传统轮询:客户端经常向服务器发出小请求,检查更新。即使没有发生更新,客户端也不知道这一点,并且必须不断轮询更新。虽然每个请求可能都是轻量级的,但许多客户端的持续轮询可以快速累加。
  • 长轮询:客户端定期请求更新,例如定期轮询,但如果没有可用的更新,则服务器不会立即响应并保持连接打开。当最终可用更新时,服务器将其推送到客户端,客户端对其执行操作,然后重复该过程。长轮询提供类似推送的更新解决方案,但基本上是一种自我造成的DDoS攻击,对于许多类型的Web服务器来说可能是非常耗费资源的。

使用WebSockets,您可以获得长轮询的所有响应优势,同时显着降低服务器端开销。

答案 1 :(得分:2)

WebSockets比AJAX调用更有效(并且“更实时”),因为您保持连接打开,并且在每个请求和响应之后不发送额外的协议头和其他内容。查看this文章:

  

连接时   WebSocket,客户端和服务器交换   每帧数据,每个2字节,   相比于8千字节的http   进行连续轮询时的标题。