基於Ajax的長輪詢(long-polling)方式

如 圖 1 所示,AJAX 的出現使得 JavaScript 可以調用 XMLHttpRequest 對象發出 HTTP 請求,JavaScript 響應處理函數根據服務器返回的信息對 HTML 頁面的顯示進行更新。使用 AJAX 實現“服務器推”與傳統的 AJAX 應用不同之處在於:

  1. 服務器端會阻塞請求直到有數據傳遞或超時才返回。
  2. 客戶端 JavaScript 響應處理函數會在處理完服務器返回的信息後,再次發出請求,重新建立連接。
  3. 當客戶端處理接收的數據、重新建立連接時,服務器端可能有新的數據到達;這些信息會被服務器端保存直到客戶端重新建立連接,客戶端會一次把當前服務器端所有的信息取回。

參考:http://www.ibm.com/developerworks/cn/web/wa-lo-comet/


一個具體的例子:

以nodeJs搭建的 node_chat 聊天室  地址:https://github.com/ry/node_chat

詳細解說 cnodejs下的《node chat源碼解讀》 http://cnodejs.org/topic/4f16442ccae1f4aa27001145

這個例子就是Web頁面以長輪詢的方式向服務器發送請求,讀取新的聊天信息,如果沒有新的聊天信息,則先不執行回調函數,將callback壓入callbacks隊列,直到有新的聊天信息時,觸發callback

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章