atitit.web 推送實現方案集合html
1. 倆中模式 Push/Pull 1html5
2. 須要實現的特性 2java
2.3. 提供鏈接上線前、上線、下線前、下線、發送消息等多種可處理事件。 2緩存
2.4. 消息緩存機制,確保長輪詢工做模式下不丟失消息。 2tomcat
2.6. 客戶端異常中止工做,服務端可定時檢查並感知。 2服務器
2.7. 以註冊通道應用的方式,讓開發者對框架功能進行擴展,實現本身的應用。 2websocket
3. 客戶端實現::長輪詢(簡單輪詢,長輪詢,HTTP 流)、長鏈接、自動選擇三種工做模式 3
4. 服務端的信息實現(點對點,發佈/訂閱),JMS 消息系統 4
5.2. socket。。須要Flash XMLSocket、Java Applet 等插件支持 7
服務器推送(Server Push) 推送技術的基礎思想是將瀏覽器主動查詢信息改成服務器主動發送信息。服務器發送一批數據,瀏覽器顯示這些數據,同時保證與服務器的鏈接。當服務器須要再次發送一批數據時,瀏覽器顯示數據並保持鏈接。之後,服務器仍然能夠發送批量數據,瀏覽器繼續顯示數據,依次類推。 客戶端拉曳(Client Pull) 在
做者:: 老哇的爪子 Attilax 艾龍, EMAIL:1466519819@qq.com
轉載請註明來源: http://blog.csdn.net/attilax
功能特性
目前的 Web 應用是基於 HTTP 協議的,其規定了請求-響應的處理模型,位於應用層的單工通信模式使得純粹意義上的服務端推送方式變得難以實現。
爲了基於 HTTP 協議進行「推送」實現,可由客戶端發起 HTTP 請求輪詢,服務端在請求後返回響應。
根據輪詢時間、請求處理方式,分爲如下三種推。
客戶端通常以定時方式發起請求,服務端處理後返回響應。
● 原理、客戶端/服務端實現簡單
● 可根據應用場景調整輪詢時間間隔
● 服務端須要處理大量請求
客戶端發起請求後服務端將該請求掛起(不返回響應),直到超時、異常或須要處理響應(推內容)才返回。客戶端收到響應後再次請求(即輪詢)服務端,並處理響應。
● 實時性高
● 服務端須要管理掛起請求
客戶端發起請求後服務器端處理請求,並經過 HTTP 流一直向客戶端寫入數據,直到超時或異常才返回響應。鏈接斷開後客戶端再次請求服務端,屬於長輪詢的一種。
消息是系統或組件間通信的一種低耦合方式,是系統級異步架構的基礎。
在 Web 消息推送中,服務端管理應用狀態,當狀態發生變遷時須要通知客戶端,完成消息推送。
須要重點關注以下技術點:
● 點對點
只有一個客戶端能夠接收到消息。
● 發佈/訂閱
廣播給訂閱的客戶端。可配置持久化訂閱。
● 會話本地事務提交時會對收到的消息進行確認,回滾時將重傳全部消息
● 非本地事務確認:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNO、Session.DUPS_OK_ACKNOWLEDGE
JMS 消息系統爲單獨的通信總線服務獨立於應用系統,Pushlets 爲應用系統中的一個組件。
消息表管理組件提供消息新增,以及對推送過的消息記錄的查詢、刪除。
● 服務層消息處理
JMS 對於應用開發是透明的,應用只需調用封裝好的發送接口,繼承監聽接口。發送時根據應用場景設置主題屬性,監聽處理時根據消息屬性實現處理邏輯。
● 消息表管理
須要使用定時任務或手動觸發清除歷史消息。
● Pushlets 配置,License 問題:Pushlets 是以 LGPL 開源的,對於商業項目使用時必須進行封裝:《基於 Pushlets 的消息推送設計》。
做爲Android開發人員,在作應用開發時咱們經常會碰到消息推送,由於Android不像蘋果,自己沒有消息推送機制,一般採用的是基於XMPP協議 的推送,但這種開發很麻煩,所以在市場上應運而生了一種封裝好的推送方式:極光推送,它的出現大大節省了開發時間,極光推送一度佔領移動開發的市場,可是 最近,百度推出了新的推送方式:百度雲推送,在市場的反應也至關不錯,做爲開發者,有時候不知道選擇哪種方式的推送合適,下面就將詳細介紹下這二者的區 別和優點,但願你能從中找到答案。
可使用套接字接口進行全雙工通信。能夠經過 Flash XMLSocket、Java Applet 技術實現。
但因爲實現方案與廠商技術綁定過緊,不屬於 Web 標準化範疇,而且存在一些限制(通信端口開啓安全、客戶端插件),這裏不進行描述。
是一個微型的即時推送框架,它分爲服務端 與客戶端兩部分,你只要將服務器端(JAR文件,目前僅支持Tomcat六、7)放入WEB-INF\lib,客戶端(JavaScript文件)引入到 頁面,那麼你的應用就具有了向客戶端推送信息的能力,而你僅須要在服務器端調用Comet4J所提供發送方法,信息就會被主動的推送到客戶的瀏覽器上。
Comet4J目前僅支持Tomcat六、7版本,根據您所使用的Tomcat版本下載【comet4j-tomcat6.jar】或【comet4j-tomcat7.jar】文件放置到WEB項目的WEB-INF\lib目錄下
omet4J(Comet for Java)是一個純粹基於AJAX(XMLHTTPRequest)的服務器推送框架,消息以JSON方式傳遞,具有長輪詢、長鏈接、自動選擇三種工做模式
支持XMLHTTPRequest對象的瀏覽器都可支持長輪詢工做模式,但不必定可以支持長鏈接。
瀏覽器/平臺 |
版本 |
長輪詢 |
長鏈接 |
Internet Explorer |
6,7,8,9 |
√ |
X |
FireFox |
3.0+(更底版本未知) |
√ |
√ |
Chrome |
7.0+(更底版本未知) |
√ |
√ |
Safari |
5+(更底版本未知) |
√ |
√ |
Opera |
11.10+(更底版本未知) |
√ |
X |
Air |
1.5+(更底版本未知) |
√ |
√ |
IOS(Iphone/Ipad) |
3.1+(更底版本未知) |
√ |
√ |
Android |
未測試 |
未知 |
未知 |
BlackBerry |
未測試 |
未知 |
未知 |
comet4j java服務端推送消息到web頁面實例 - shadowsick的專欄 - 博客頻道 - CSDN.NET.htm
消息推送機制技術設計_百度文庫.htm
百度雲?極光?個推? - 51CTO.COM.htm