前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轮询和长轮询的区别

轮询和长轮询的区别

原创
作者头像
CRMEB商城源码
发布2022-08-01 14:14:53
2.1K0
发布2022-08-01 14:14:53
举报
文章被收录于专栏:crmeb

1.轮询

由客户端发送请求,服务器接收请求的过程,通过客户端不断请求,使得客户端能够模拟达到类似实时收到服务器的效果。客户端定时向服务器发送 Ajax 请求,服务器接到请求后马上返回响应信息,并关闭连接。

不管服务端数据有无更新,客户端每隔定长时间请求拉取一次数据,可能有更新数据返回,也可能什么都没有。

适用用户量比较小,不太注重性能的项目,如小型应用、WEB 应用、例如系统消息、天气展示等。

优点:逻辑简单,易于理解,开发快速。

缺点:

(1)需要重复建立 HTTP 连接,占用大量客户端和服务端的连接

资源。

客户端越多, 服务端压力越大,很多时候并没有新的数据更新,因此绝大部分请求都是无效请求。

数据不一定是实时更新,要看设定的请求间隔,基本会有延迟。

up-67adb9c68f27563e383e9517def0a719cb4.png
up-67adb9c68f27563e383e9517def0a719cb4.png
up-49e8cca0d5b83d61b7c3adcc69ddd531dce.png
up-49e8cca0d5b83d61b7c3adcc69ddd531dce.png

2.长轮询

长轮询是长连接的一种,当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应,如果一直没有数据,则会 hold 住请求,直到服务端的数据发生变化,或者等待一定时间超时才会返回。

客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。像 WebQQ/FaceBook 早起都是使用长轮询实现的。

优点:消息即时到达,和短轮询比起来,明显减少了很多不必要的 HTTP 请求次数,在无消息的情况下不会频繁的请求,相比之下节约了资源,在无消息的情况下不会频繁的请求。

缺点:连接挂起会导致资源的浪费,长轮询会造出非常多的请求,不断的请求可能会造成的影响是数据顺序无法得到保证。

up-bf4cc8805650dd021b5b5fb2beb2d1f0ae5.png
up-bf4cc8805650dd021b5b5fb2beb2d1f0ae5.png

3.建议

轮训能够实现的功能长轮训都能满足,从技术角度考虑建议使用长轮训替换轮训实现,节省服务器性能和带宽,相比下来开发成本也不高。

源码附件已经打包好上传到百度云了,大家自行下载即可~

链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27

提取码: yu27

百度云链接不稳定,随时可能会失效,大家抓紧保存哈。

如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~

开源地址

码云地址:

http://github.crmeb.net/u/defu

Github 地址:

http://github.crmeb.net/u/defu

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.轮询
  • 2.长轮询
  • 3.建议
  • 开源地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档