美文网首页
轮询与长轮询

轮询与长轮询

作者: 蘑菇不寂寞 | 来源:发表于2019-05-09 16:08 被阅读0次

数据交互有两种模式:Push(推模式)、Pull(拉模式)。

 1 推模式指的是客户端与服务端建立好网络长连接,服务方有相关数据,直接通过长连接通道推送到客户端。

     <1>优点:及时,一旦有数据变更,客户端立马能感知到;另外对客户端来说逻辑简单,不需要关心有无数据这些逻辑处理。

    <2>缺点:不知道客户端的数据消费能力,可能导致数据积压在客户端,来不及处理。

 2  拉模式指的是客户端主动向服务端发出请求,拉取相关数据。

    <1>优点:此过程由客户端发起请求,故不存在推模式中数据积压的问题。

    <2>缺点:可能不够及时,对客户端来说需要考虑数据拉取相关逻辑,何时去拉,拉的频率怎么控制等等。

轮询和长轮询

               两种均为pull拉模式

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

 2  Long Polling<长轮询>:客户端发起Long Polling,此时如果服务端没有相关数据,会hold住请求,直到服务端有相关数据,或者等待一定时间超时才会返回。返回后,客户端又会立即再次发起下一次Long Polling。(所谓的hold住请求指的服务端暂时不回复结果,保存相关请求,不关闭请求连接,等相关数据准备好,写会客户端。)

 3  前面提到Long Polling如果当时服务端没有需要的相关数据,此时请求会hold住,直到服务端把相关数据准备好,或者等待一定时间直到此次请求超时,这里大家是否有疑问,为什么不是一直等待到服务端数据准备好再返回,这样也不需要再次发起下一次的Long Polling,节省资源?

   主要原因是网络传输层主要走的是tcp协议,tcp协议是可靠面向连接的协议,通过三次握手建立连接。但是所建立的连接是虚拟的,可能存在某段时间网络不通,或者服务端程序非正常关闭,亦或服务端机器非正常关机,面对这些情况客户端根本不知道服务端此时已经不能互通,还在傻傻的等服务端发数据过来,而这一等一般都是很长时间。当然tcp协议栈在实现上有保活计时器来保证的,但是等到保活计时器发现连接已经断开需要很长时间,如果没有专门配置过相关的tcp参数,一般需要2个小时,而且这些参数是机器操作系统层面,所以,以此方式来保活不太靠谱,故Long Polling的实现上一般是需要设置超时时间的。

如何进行长轮询

1 发起Polling

    发起Polling很简单,只需向服务器发起请求,此时服务端还未应答,所以客户端与服务端之间一直处于连接状态

2 数据推送

    如果服务器端有相关数据,此时服务端会将数据通过此前建立的通道发回客户端。

3 Polling终止

    Polling终止情况有三种:

        若服务端返回相关数据,此时客户端收到数据后,关闭请求连接,结束此次Polling过程。

        若客户端等待设定的超时时间后,服务端依然没有返回数据,此时客户端需要主动终止此次Polling请求。

        若客户端收到网络故障或异常,此时客户端自然也是需要主动终止此次Polling请求。

4 重新Polling

    终止上次Polling后,客户端需要立即再次发起Polling请求。这样才能保证拉取数据的及时性。

---------------------

作者:scorpion喵喵

来源:CSDN

原文:https://blog.csdn.net/weixin_40133326/article/details/80905121

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

  • 轮询与长轮询

    数据交互有两种模式:Push(推模式)、Pull(拉模式)。 1 推模式指的是客户端与服务端建立好网络长连接,服务...

  • http长短连接和长短轮询、webSocket

    本文主要介绍长连接、短连接、长轮询、短轮询 和 webSocket。长连接、短连接、长轮询、短轮询是基于http的...

  • ajax轮询与长轮询

    刚刚网了关于轮询的知识,必须拿到自己这里来做个备份了! 其实以前用ajax轮询做个及时数据更新的,只是当时做了不知...

  • ajax轮询、长轮询与WebSocket

    轮询 浏览器按照规定的时间向服务器发送请求,服务器接受并返回响应信息并关闭连接。(通过定时器实现) 长轮询 浏览器...

  • 长轮询&短轮询

    一、http协议 http 协议是请求/响应范式的,每一个 http 响应都是由一个对应的 http 请求产生的,...

  • 长轮询 短轮询

    短轮询相信大家都不难理解,比如你现在要做一个电商中商品详情的页面,这个详情界面中有一个字段是库存量(相信这个大家都...

  • iOS 消息推送方案对比

    应用场景 社交聊天,直播弹幕,多玩家游戏,金融股票,体育直播,位置变化,智能家居 轮询 长轮询与短轮询的区别 短轮...

  • swoole学习第七讲(学习swoole需要掌握的知识)

    轮询、长轮询、长连接、单工、全双工、半双工区别 轮询:客户端发送request请求,服务端回应response响应...

  • 轮询、长轮询、长连接、websocket

    短轮询 基本思路:浏览器每隔一段时间向浏览器发送http请求,服务器端在收到请求后,不论是否有数据更新,都直接进行...

  • 轮询、长轮询、长连接、websocket

    今天做一个档案项目,一个内容的状态是随时发生变化的,后端和我说这里要做轮询,我一听轮询一时间没有反应过来,查阅了相...

网友评论

      本文标题:轮询与长轮询

      本文链接:https://www.haomeiwen.com/subject/paawoqtx.html