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

先看一下维基的解释:

"Comet是一种用于web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,Ajax和iframe流。"

——维基百科

维基的解释比较绕,那我们用人话来解释一下:

凡是由服务端(即服务器,再具体点就是你目前访问的那个文件)实时的,不间断的往客户端(浏览器)发送数据的技术,都可以称之为Comet技术,目前这个技术可以通过两个方式实现,Ajax和iframe流。

还是有些不明觉厉的话,看代码:

<?php

$pdo = new PDO('mysql:dbname=test;host=127.0.0.1','root','root');

$resource = $pdo->query('select * from t1');

$result = $resource->fetchall();

while (true) {

    if ($result) {

        echo '往服务器发数据' ;

        print_r($result);

    }else{

    }

}

?>

将这段代码运行起来,就是一个最最最简化版的Comet技术。

想象一下,当服务器运行这段代码的时候,服务器是不是像吃炫迈一样一起像客户端(浏览器)发送数据?而且是根本停不下来那种,这就叫做Comet,也叫作服务器"推",也叫反向ajax。

前台请求的代码如果是iframe,那就叫做iframe流,如果是ajax请求,那就叫做ajax 轮询/长轮询。

内什么,你还问我Comet是啥?Comet就是服务器一直像客户端发送数据呀!

下面是Comet具体的技术实现:

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

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

你可能感兴趣的文章

7 条评论

roi_yu 2016年04月30日

其實還是客戶端一直在請求,不是服務器主動推送

回复

gzchen 作者 2016年04月30日

第一次请求肯定是客户端啊,但后面就不是了

回复

井上心葉 2016年05月01日

讲了半天卵用没有,还不是请求,真没营养…

回复

井上心葉 2016年05月01日

回复

gzchen 作者 2016年05月01日

你确定不是你自己的问题

回复

战神悟空 2016年05月28日

这个代码我可以理解为简易的消息推送吧!

回复

gzchen 作者 2016年05月28日

可以

回复

载入中...
gzchen gzchen

3.7k 声望

发布于专栏

傍晚八点半

请你指出我文章中的错误与不足,谢谢

19 人关注

SegmentFault

一起探索更多未知

下载 App