码迷,mamicode.com
首页 > Web开发 > 详细

WebSockets和轮训实现之间的差别

时间:2014-08-25 13:30:54      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   os   使用   数据   ar   2014   问题   

如果你曾经使用过一种服务器端语言和一种数据库构建过一个网页聊天室,你会很想知道WebSockets和传统方式实现之间的差别。

  传统聊天室通常是使用轮询方法实现的。客户端周期性地向服务器询问是否有更新。服务器回复给客户端更新的数据或者没有更新。然而,传统方法有以下问题。只有客户端主动询问服务器才能从服务器获得更新的数据。这意味着更新的数据会周期性延迟而且服务器的应答不够及时。如果我们想通过减少轮询过程来改进这个问题,则需要更大带宽,因为客户端需要不间断地向服务器发送请求。

  下图展示了客户端和服务器之间的请求。它表明许多无用请求被发送了,然而服务器向客户端回复的内容中并没有新数据。 bubuko.com,布布扣

  长轮询是一种更好的轮询方法。客户端向服务器发送请求并等待回复。而不是传统轮询方法中服务器回复"no update"且服务器只有当需要将信息推送到服务器时才回复。在这种方法中,服务器可以不管何时有更新都可以推送信息到客户端。一旦客户端收到服务器的应答,它构建另一个请求并等待下一个服务器的推送。下图展示了长轮询,客户端询问更新,服务器只有在有更新时才回复:

bubuko.com,布布扣

  在WebSockets方法中,请求数目大大少于轮询方法。这是因为客户端和服务器的连接是永久的。一旦连接建立,只有信息更新时,客户端或者服务器端才发送请求。举例,客户端想向服务器更新信息时就向服务器发送信息。服务器只有需要推送给客户端更新数据时才向客户端发送消息。在连接中,没有无用请求发送。因此,只需要更小的带宽。下图展示了WebSockets方法:

bubuko.com,布布扣

WebSockets和轮训实现之间的差别

标签:style   http   color   os   使用   数据   ar   2014   问题   

原文地址:http://my.oschina.net/u/919580/blog/306305

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!