资讯专栏INFORMATION COLUMN

用大白话揭开Ajax长轮询(long polling)的神秘面纱

AlphaGooo / 1674人阅读

摘要:在看这篇长轮询之前可以先看看轮询技术没有长,有助于理解长轮询属于轮询的升级版,在客户端和服务端都进行了一些改造,使得消耗更低,速度更快。不间断的通过查询服务端。然后客户端不间断继续发起请求数据不存在,继续循环。

在看这篇Ajax长轮询之前可以先看看Ajax轮询技术(没有长),有助于理解:

Ajax长轮询属于Ajax轮询的升级版,在客户端和服务端都进行了一些改造,使得消耗更低,速度更快。

"不间断的通过Ajax查询服务端"。

来,小二,先上代码~:

Reception.html //客户端





    

    










server.php: //服务端

query("select * from t1");

$result = $resource->fetchall();

while (true) {

    if ($result) {

        //exits data

        print_r(json_encode(array("success"=>"存在数据,返回")));

        exit(); //输出数据,退出。然后客户端不间断继续发起请求

    }

    //数据不存在,继续循环。

}

?>

看出了玄机了嘛?长轮询的精髓就在于Ajax的回调函数,继续再次调用Ajax请求(不间断的原理就在这里,成功返回后立即再次调用):

$.ajax(getting);

下面是是Ajax 长轮询的图解:

首先请忽略绿色字体的使用限制,然后哪位朋友有可以推荐的画图工具可以推荐给我,我现在用的是忆图图示。

图中有两次请求(本文中的请求默认均为Ajax),第一次很快返回了结果,然后不间断的立即发送第二次请求,但是第二次请求没有获得数据,所以请求迟迟没有返回(被挂在服务器了,但只要有数据就会再次返回),如果第二次的请求返回数据后,第三次请求旋即会立刻发出,这种技术就称为Ajax 长轮询。

用伪代码来表示就是这样:


最关键的地方在于前一次请求结束后,第二次请求立即不间断的发起,这个就叫做Ajax长轮询

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21535.html

相关文章

  • Ajax轮询——“定时通过Ajax查询服务端”

    摘要:概念轮询客户端按规定时间定时像服务端发送请求,服务器接到请求后马上返回响应信息并关闭连接。判断表是否有数据,并执行对应输出。实际项目中的话查询语句就根据实际需求来定就可以了。 Ajax轮询——定时的通过Ajax查询服务端。 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 百闻不如一见,来段代码相信你一看就明白 ...

    imingyu 评论0 收藏0
  • Comet——随着AJAX技术兴起而产生新技术

    摘要:不得不说确实是一个好东西,由它的出现使得端新技术不断产生,就属于这么一个技术,这个技术有时叫做反向,有时叫做服务器推技术,嗯,不要被牛逼闪闪的名词吓倒,其实没那么难。 不得不说Ajax确实是一个好东西,由它的出现使得WEB端新技术不断产生,Comet就属于这么一个技术,这个技术有时叫做反向AJAX,有时叫做服务器推技术,嗯,不要被牛逼闪闪的名词吓倒,其实没那么难。 先看一下维基的解释:...

    afishhhhh 评论0 收藏0
  • 简单又好聊天室技术——WebSocket

    摘要:国际惯例,先上维基百科的解释。维基百科上面是维基百科对的解释,别问我如何解释上面这段话,因为我也没看懂,那么下面我用人话解释一下吧仅仅是我的理解是一个协议,可以简单看成是协议的一个补充协议,借助协议的基础完成服务器主动与客户端实时传输数据。 现在,很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务...

    Prasanta 评论0 收藏0
  • express+socket.io实现一个简易版聊天室

    摘要:用伪代码来模拟下长轮询的过程前端利用下面函数进行请求后端代码做如下更改利用随机数的大小来模拟是否有新数据有新数据来了长轮询的确减少了请求的次数,但是它也有着很大的问题,那就是耗费服务器的资源。 写在前面 最近由于利用node重构某个项目,项目中有一个实时聊天的功能,于是就研究了一下聊天室,在线demo|源码,欢迎大家反馈。这个聊天室的主要利用到了socket.io和express。这个...

    Chaz 评论0 收藏0
  • WebSocket就这么回事儿

    摘要:服务端确认协议版本,升级为协议。自己写了一个例子,服务端在开始连接后,利用定时器主动向客户端发送随机数,客户端也可以发给服务器消息,然后服务器返回这条消息给客户端。做的事情就是给页面的元素绑定事件。 写在前面webSocket是一项可以让服务器将数据主动推送给客户端的技术。前几天写了一个日志功能,日志数据需要实时更新。正好项目中有封装好的WebSocket组件,且接口支持webSock...

    ruicbAndroid 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<