基于jquery,php實現AJAX長輪詢(LongPoll).doc_第1頁
基于jquery,php實現AJAX長輪詢(LongPoll).doc_第2頁
基于jquery,php實現AJAX長輪詢(LongPoll).doc_第3頁
基于jquery,php實現AJAX長輪詢(LongPoll).doc_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

HTTP是無狀態、單向的協議,用戶只能夠通過客服端向服務器發送請求并由服務器處理發回一個響應。若要實現聊天室、WEBQQ、在線客服、郵箱等這些即時通訊的應用,就要用到“ 服務器推送技術(Comet)”。傳統的AJAX輪詢方式,客服端以用戶定義的時間間隔去服務器上查詢最新的數據。種這種拉取數據的方式需要很短的時間間隔才能保證數據的精確度,但太短的時間間隔客服端會對服務器在短時間內發送出多個請求。反轉AJAX,就是所謂的長輪詢或者COMET。服務器與客服端需要保持一條長時間的請求,它使得服務器在有數據時可以返回消息給客戶端。html:view plaincopy to clipboardprint?1. 2. javascript:這里使用AJAX請求data.php頁面獲得success的值,請求的時間達到80秒。在這80秒中若沒有從服務端返回success則一直保持連接狀態,直到有數據返回或success的值為0才關閉連接。在關閉連接后在繼續下一次的請求。view plaincopy to clipboardprint?1. $(function()2. 3. 4. $(#btn).bind(click,btn:$(#btn),function(evdata)5. $.ajax(6. type:POST,7. dataType:json,8. url:data.php,9. timeout:80000,/ajax請求超時時間80秒10. data:time:80,/40秒后無論結果服務器都返回數據11. success:function(data,textStatus)12. /從服務器得到數據,顯示數據并繼續查詢13. if(data.success=1)14. $(#msg).append(有數據+data.text);15. evdata.data.btn.click();16. 17. /未從服務器得到數據,繼續查詢18. if(data.success=0)19. $(#msg).append(無數據);20. evdata.data.btn.click();21. 22. ,23. /Ajax請求超時,繼續查詢24. error:function(XMLHttpRequest,textStatus,errorThrown)25. if(textStatus=timeout)26. $(#msg).append(超時);27. evdata.data.btn.click();28. 29. 30. 31. );32. );33. 34. );PHP:在這里是無限的循環,循環的結束條件就是獲取到了返回結果返回Json數據。并且接受$_POSTtime參數來限制循環的超時時間,避免資源的過度浪費。(瀏覽器關閉不會發消息給服務器,使用可能一直循環下去)view plaincopy to clipboardprint?1. if(empty($_POSTtime)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($rand1,name=xiaocai,text=$rand);13. echojson_encode($arr);14. exit();15. 16. 17. /服務器($_POSTtime*0.5)秒后告訴客服端無數據18. if($i=$_POSTtime)19. $arr=array(success=0,name=xiaocai,text=$rand);20. echojson_encode($arr);21. exit();22. 23. 24. 運行效果:在圖中可以看到無數據的請求時間達到了40S,在40S的請求中若獲得數據則請求關閉。傳統的AJAX輪詢方式:HTTP請求和響應頭信息開銷總共包括871字節,而且還不包括任何數據,當然,這只是一個例子,你的消息頭數據完全可能低于871字節,但我也看到過消息頭數據超過2000字節的情況。在這個例子中,股票主題消息數據大約只有20個字符。當你把這樣的程序大規模部署給用戶時會怎么樣?我們使用三個不同的用例觀察一下該輪詢應用程序關聯的HTTP請求和響應頭數據需要的網絡吞吐量。用例A:1000客戶端,每秒輪詢一次網絡吞吐量(871x1000)=871000字節=6968000比特/秒(6.6Mbps)用例B:10000客戶端,每秒輪詢一次網絡吞吐量(871x1000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論