不得不說Ajax確實是一個好東西,由它的出現使得WEB端新技術不斷產生,Comet就屬於這麼一個技術,這個技術有時叫作反向AJAX,有時叫作服務器"推"技術,嗯,不要被牛逼閃閃的名詞嚇倒,其實沒那麼難。php
先看一下維基的解釋:mysql
"Comet是一種用於web的推送技術,能使服務器實時地將更新的信息傳送到客戶端,而無須客戶端發出請求,目前有兩種實現方式,Ajax和iframe流。"web
——維基百科ajax
維基的解釋比較繞,那咱們用人話來解釋一下:sql
凡是由服務端(即服務器,再具體點就是你目前訪問的那個文件)實時的,不間斷的往客戶端(瀏覽器)發送數據的技術,均可以稱之爲Comet技術,目前這個技術能夠經過兩個方式實現,Ajax和iframe流。segmentfault
仍是有些不明覺厲的話,看代碼:瀏覽器
<?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。fetch
前臺請求的代碼若是是iframe,那就叫作iframe流,若是是ajax請求,那就叫作ajax 輪詢/長輪詢。code
內什麼,你還問我Comet是啥?Comet就是服務器一直像客戶端發送數據呀!
下面是Comet具體的技術實現: