成人免费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技術棧公眾號

主站蜘蛛池模板: 日本成人中文字幕 | 日韩有码一区 | 日韩欧美在线视频 | 天天在线操 | 超碰精品在线 | 日韩精品免费 | 精品久久影院 | 99精品欧美一区二区三区综合在线 | 在线观看视频福利 | 91超碰caoporn97人人 | 久久999| 日本免费视频在线观看 | jizz在线免费观看 | 久久久久久久国产 | 日韩伦理一区二区 | 国产ts人妖一区二区三区 | 美女露尿口视频 | 欧美一区二区三区视频在线观看 | 欧美成人第一页 | 亚洲日本激情 | 国产午夜av片 | 在线播放中文字幕 | 性高朝久久久久久久3小时 av一区二区三区四区 | 97人人澡人人爽91综合色 | 亚洲综合中文字幕在线观看 | 精品国产一区二区在线 | 我想看一级黄色毛片 | 日韩中文字幕一区 | 午夜视频网站 | 国产黄色一级片 | 一区视频 | 久久精品欧美一区二区三区麻豆 | 91热爆在线观看 | 日韩一区在线播放 | 久久精品99 | 中文字幕日韩欧美 | 综合久久久 | 在线免费观看成人 | 91亚洲精 | 国产免费拔擦拔擦8x高清 | 91麻豆精品国产91久久久久久久久 |