成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于jQuery與PHP實現Ajax長輪詢(LongPoll)

開發 前端 后端
HTTP是無狀態、單向的協議,用戶只能夠通過客服端向服務器發送請求并由服務器處理發回一個響應。若要實現聊天室、WEBQQ、在線客服、郵箱等這些即時通訊的應用,就要用到“ 服務器推送技術(Comet)”。

傳統的AJAX輪詢方式,客服端以用戶定義的時間間隔去服務器上查詢***的數據。種這種拉取數據的方式需要很短的時間間隔才能保證數據的精確度,但太短的時間間隔客服端會對服務器在短時間內發送出多個請求。

反轉AJAX,就是所謂的長輪詢或者COMET。服務器與客服端需要保持一條長時間的請求,它使得服務器在有數據時可以返回消息給客戶端。

XHTML

  1. <div id="msg"></div>     
  2. <input id="btn" type="button" value="測試" />    

jQuery

這里使用AJAX請求data.php頁面獲得‘success’的值,請求的時間達到80秒。在這80秒中若沒有從服務端返回‘success’則一直保持連接狀態,直到有數據返回或‘success’的值為0才關閉連接。在關閉連接后在繼續下一次的請求。

  1. $(function(){   
  2.     $("#btn").bind("click",{btn:$("#btn")},function(evdata){      
  3.          $.ajax({      
  4.                 type:"POST",      
  5.                 dataType:"json",      
  6.                 url:"data.php",      
  7.                 timeout:80000,     //ajax請求超時時間80秒      
  8.                 data:{time:"80"}, //40秒后無論結果服務器都返回數據      
  9.                 success:function(data,textStatus){      
  10.                     //從服務器得到數據,顯示數據并繼續查詢      
  11.                     if(data.success=="1"){      
  12.                      $("#msg").append("<br>[有數據]"+data.text);      
  13.                      evdata.data.btn.click();      
  14.                     }      
  15.                  //未從服務器得到數據,繼續查詢      
  16.                     if(data.success=="0"){      
  17.                     $("#msg").append("<br>[無數據]");      
  18.                     evdata.data.btn.click();      
  19.                     }      
  20.                 },      
  21.              //Ajax請求超時,繼續查詢      
  22.              error:function(XMLHttpRequest,textStatus,errorThrown){      
  23.                      if(textStatus=="timeout"){      
  24.                          $("#msg").append("<br>[超時]");      
  25.                          evdata.data.btn.click();      
  26.                      }      
  27.              }      
  28.                       
  29.             });      
  30.     });      
  31.           
  32. });    

PHP

在這里是無限的循環,循環的結束條件就是獲取到了返回結果返回Json數據。

并且接受$_POST['time']參數來限制循環的超時時間,避免資源的過度浪費。(瀏覽器關閉不會發消息給服務器,使用可能一直循環下去)

  1. if(emptyempty($_POST['time']))exit();      
  2. set_time_limit(0);//無限請求超時時間      
  3. $i=0;      
  4. while (true){      
  5.     //sleep(1);      
  6.     usleep(500000);//0.5秒      
  7.     $i++;      
  8.           
  9.     //若得到數據則馬上返回數據給客服端,并結束本次請求      
  10.     $rand=rand(1,999);      
  11.     if($rand<=15){      
  12.         $arr=array('success'=>"1",'name'=>'xiaocai','text'=>$rand);      
  13.         echo json_encode($arr);      
  14.         exit();      
  15.     }      
  16.           
  17.     //服務器($_POST['time']*0.5)秒后告訴客服端無數據      
  18.     if($i==$_POST['time']){      
  19.         $arr=array('success'=>"0",'name'=>'xiaocai','text'=>$rand);      
  20.         echo json_encode($arr);      
  21.         exit();      
  22.     }      
  23. }   

運行效果:在圖中可以看到無數據的請求時間達到了40S,在40S的請求中若獲得數據則請求關閉。

基于jquery,php實現AJAX長輪詢(LongPoll) 

原文鏈接:http://www.xiaocai.name/emlog/?post=32

【編輯推薦】

  1. 如何理解與簡化jQuery的closest函數
  2. 手把手教你使用jQuery操作元素的屬性與樣式
  3. 從零開始學習jQuery之管理jQuery包裝集
  4. jQuery性能指標和調優
  5. jQuery實現仿人人網彈出層效果
責任編輯:陳貽新 來源: 小菜的博客
相關推薦

2013-03-15 10:57:13

AJAXDotNet

2011-05-18 13:43:52

jQueryAjaxPHP

2017-10-12 15:34:17

2012-02-08 17:01:36

2025-04-14 11:41:12

RocketMQ長輪詢配置

2017-10-11 18:17:06

大數據數據可視化前后端

2023-11-28 08:49:01

短輪詢WebSocket長輪詢

2009-09-07 14:41:48

GridView展開與

2009-11-24 14:22:03

基于PHP的AJAX技

2009-06-26 13:46:13

Struts

2011-04-14 10:08:04

AJAXPHPJQuery

2025-04-27 02:00:00

實時通信Nacos服務端

2012-09-28 10:18:53

IBMdw

2010-12-28 13:44:12

PHPXMLjQuery

2009-02-12 09:55:22

AjaxMVCDojo

2010-06-04 10:40:55

AJAX MySQL

2009-11-24 16:09:44

PHP Ajax

2013-12-02 14:40:03

jQueryAjax

2010-10-27 10:02:36

PHP

2020-04-16 15:20:43

PHP前端BIO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品免费视频 | 国产精品69久久久久水密桃 | 国产一区免费视频 | 日韩精品一区二区久久 | 久久91av | 国产在线一区二区 | 久久久久国产一级毛片 | 日本大香伊一区二区三区 | av黄色在线播放 | 亚洲视频免费在线观看 | 精品久久久网站 | 欧美二区三区 | 91精品国产综合久久婷婷香蕉 | 美女高潮网站 | 成人夜晚看av | 久在线| 日韩精品视频在线播放 | 亚洲国产成人精品女人 | 亚洲精美视频 | 中文字幕高清av | 97人澡人人添人人爽欧美 | 久久久久久免费看 | 亚洲影视在线 | 午夜不卡福利视频 | 日韩欧美精品在线 | 日韩一级免费观看 | 影音先锋欧美资源 | 三级高清 | 久久久妇女国产精品影视 | 亚洲国产精品久久久 | 99精品免费在线观看 | 天天操天天摸天天爽 | 久久国产亚洲 | 男女网站在线观看 | 美女天堂在线 | 91久久精品国产免费一区 | 国产精品福利视频 | 色婷婷亚洲国产女人的天堂 | 成人小视频在线观看 | 免费在线观看成人 | 日韩一级 |