來自:http://www.pussor.com/?p=3
官網:http://www.pushlets.com/
Ajax等Web 2.0技術的廣泛應用,推動了C/S向B/S的轉變,如今很多應用如監控、即時通信等系統都需要實時同步服務器端和客戶端的數據更新。Comet在這種需求下應運而生,本文簡單介紹了基于Comet的開源框架Pushlet。
Comet基礎
Comet 是一個用于描述客戶端和服務器之間的交互的術語,即使用長期保持的 HTTP 連接來在連接保持暢通的情況下支持客戶端和服務器間的事件驅動的通信。
—引用自“Comet的誘惑”
傳統的web系統的工作流程是客戶端發出請求,服務器端進行響應,而Comet則是在現有技術的基礎上,實現服務器數據、事件等快速PUSH到客戶端,所以會出現一個術語”服務器推“技術。
PUSH實現方式
JSP/SERVLET PUSH
原理:
利用JSP/SERVEL技術,在不關閉HTTP流的情況下PUSH數據到客戶端瀏覽器;
實現:
基于 AJAX 的長輪詢(long-polling)方式
AJAX 的出現使得 JavaScript 可以調用 XMLHttpRequest 對象發出 HTTP 請求,JavaScript 響應處理函數根據服務器返回的信息對 HTML 頁面的顯示進行更新。使用 AJAX 實現“服務器推”與傳統的 AJAX 應用不同之處在于:
- 服務器端會阻塞請求直到有數據傳遞或超時才返回。
- 客戶端 JavaScript 響應處理函數會在處理完服務器返回的信息后,再次發出請求,重新建立連接。
- 當客戶端處理接收的數據、重新建立連接時,服務器端可能有新的數據到達;這些信息會被服務器端保存直到客戶端重 新建立連接,客戶端會一次把當前服務器端所有的信息取回。
Pushlet實例
以Pushlet中的ping案例來進行分析:
- 新建一個Web項目取名ping,并導入Pushlet的jar包;
- 在src目錄下配置sources.properties、pushlet.properties文件;
- webroot目錄下導入js-pushlet-client.js,js-pushlet-net.html;
- 新建TestEventPullSources.java;
- 新建index.html,引入js-pushlet-client.js;
- 新建pingok.jsp;
- 修改web.xml加上pushlet的servlet
- 打包、部署ping項目;
實例1 Pushlet CookBook部分翻譯 + 注釋
pushlet 2.0.3 源碼分析(服務器端)
posted on 2010-04-23 13:38
junly 閱讀(6179)
評論(1) 編輯 收藏 所屬分類:
other