【Web通信】短轮询与长轮询(Long Polling)是什么?

本文详细介绍了短轮询和长轮询两种HTTP轮询技术的工作原理及优缺点。短轮询通过客户端定期向服务器发送请求来获取更新数据,而长轮询则通过延长HTTP连接等待时间以减少不必要的请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连载【Web通信—短轮询与长轮询(Long Polling)详解

早期的很多网站为具备数据推送能力,所在用的技术基本都是HTTP轮询。
轮询是由由客户端每隔一段时间(如每隔5s)向服务器发出HTTP请求,服务端接收到请求后向客户端返回最新的数据。

客户端的轮询方式一般为短轮询长轮询

一、短轮询

一般是由客户端每隔一段时间(如每隔5s)向服务器发起一次普通 HTTP 请求。
服务端查询当前接口是否有数据更新,若有数据更新则向客户端返回最新数据,若无则提示客户端无数据更新。
短轮询
优点:简单直接,容易实现。
缺点:请求频率无法很好确定,如果频率较高,那么就会导致服务端压力大;如果请求的频率放低,那么客户端感知变更的及时性就会降低。

二、长轮询

一般是由客户端向服务端发出一个设置较长网络超时时间的 HTTP 请求,并在HTTP 连接超时前,不主动断开连接;待客户端超时或有数据返回后,再次建立一个同样的HTTP 请求,重复以上过程。
长轮询

在上面长轮询的图中我们看到:

  • 客户端服务端 发起HTTP请求,并且设置了超时时间timeout为90秒,服务端最长的hold时间是80s;
  • 如果80秒内 服务端 有数据变化,则将数据传递给 客户端 ,并主动断开连接;
  • 如果没有数据更新,待 客户端 超时后会主动断开连接,此后 客户端 将重新建立一个新的HTTP连接,并重复上述过程。

两个时间只是个示例,代表的是服务端hold的时间要小于客户端设置的超时时间。这也很容易理解,如果服务端的hold时间大于客户端设置的超时时间,那么大概率客户端会出现timeout异常,这是非常不优雅的。

三、总结

以上两种轮询方式也带来了很明显的缺点:

  • 首先,客户端需要不断的向服务器发出请求,在消耗较多客户端资源的情况下,服务端并不一定有新的数据下发;
  • 其次,HTTP协议请求与回复消息中,需包含较长的头部信息,其中真正有效的数据有可能只占较小的一部分,带来较多的带宽资源消耗。
  • 另外,若服务端在同一时间存在连续频繁的数据变化(例如:聊天室场景中),客户端获知数据更新相对较慢(可能存在时间的滞后性)无法保证客户端的用户体验。

📢欢迎点赞👍/ 收藏⭐/ 留言📝如有错误敬请指正!
后续持续更新中…
下一篇 【Web通信】WebSocket双向通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卸载引擎

如果对您有帮助,请赏个饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值