不得不说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

4k 声望

发布于专栏

傍晚八点半

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

21 人关注

SegmentFault

一起探索更多未知

下载 App