標籤:就會 ack order soc 異常 ado android開發 頻道 配置
atitit.web 推送實現方案集合
1. 倆中模式 Push/Pull 1
2. 須要實現的特性 2
2.1. 推送訊息廣播。 2
2.2. 推送定向訊息。 2
2.3. 提供串連上線前、上線、下線前、下線、發送訊息等多種可處理事件。
2
2.4. 訊息緩衝機制。確保長輪詢工作模式下不丟失訊息。 2
2.5. client正常下線,服務端可馬上感知。 2
2.6. client異常停止工作,服務端可定時檢查並感知。
2
2.7. 以注冊通道應用的方式。讓開發人員對架構功能進行擴充。實現自己的應用。 2
3. client實現::長輪詢(簡單輪詢,長輪詢,HTTP 流)、長串連、自己主動選擇三種工作模式 3
3.1. HTTP 請求輪詢 3
3.2. 簡單輪詢 3
3.3. 長輪詢 4
3.4. HTTP 流 4
4. 服務端的資訊實現(點對點,公布/訂閱)。JMS 訊息系統 4
4.1. Pushlets 組件 5
4.2. Java Message Service 5
4.3. 邏輯架構 5
關鍵點 6
5. 解決方式總結 7
5.1. 雲方案(推薦)::百度雲?極光?個推? 7
5.2. socket。。
須要Flash XMLSocket、Java Applet 等外掛程式支援 7
5.3. mina自己socket實現 7
5.4. websocket html5 7
5.5. Comet4J 7
6. 工作模式瀏覽器支援情況 8
7. 參考 9
1. 倆中模式 Push/Pull
server推送(Server Push) 推送技術的基礎思想是將瀏覽器主動查詢資訊改為server主動發送資訊。server發送一批資料,瀏覽器顯示這些資料。同一時候保證與server的串連。
當server須要再次發送一批資料時,瀏覽器顯示資料並保持串連。以後。server仍然能夠發送批量資料,瀏覽器繼續顯示資料,依次類推。 client拉曳(Client Pull) 在
作者:: 老哇的爪子 Attilax 艾龍, EMAIL:[email protected]
轉載請註明來源: http://blog.csdn.net/attilax
2. 須要實現的特性
功能特性
2.1. 推送訊息廣播。2.2. 推送定向訊息。2.3. 提供串連上線前、上線、下線前、下線、發送訊息等多種可處理事件。2.4. 訊息緩衝機制,確保長輪詢工作模式下不丟失訊息。2.5. client正常下線,服務端可馬上感知。
2.6. client異常停止工作,服務端可定時檢查並感知。2.7. 以注冊通道應用的方式,讓開發人員對架構功能進行擴充。實現自己的應用。
3. client實現::長輪詢(簡單輪詢。長輪詢。HTTP 流)、長串連、自己主動選擇三種工作模式
3.1. HTTP 請求輪詢
眼下的 Web 應用是基於 HTTP 協議的。其規定了請求-響應的處理模型,位於應用程式層的單工通訊模式使得純粹意義上的服務端推送方式變得難以實現。
為了基於 HTTP 協議進行“推送”實現。可由client發起 HTTP 請求輪詢,服務端在請求後返迴響應。
依據輪詢時間、請求處理方式。分為下面三種推。
3.2. 簡單輪詢
client一般以定時方式發起請求,服務端處理後返迴響應。
● 原理、client/服務端實現簡單
● 可依據應用情境調整輪詢時間間隔
● 服務端須要處理大量請求
3.3. 長輪詢
client發起請求後服務端將該請求掛起(不返迴響應),直到逾時、異常或須要處理響應(推內容)才返回。client收到響應後再次請求(即輪詢)服務端。並處理響應。
● 即時性高
● 服務端須要管理掛起請求
3.4. HTTP 流
client發起請求後server端處理請求,並通過 HTTP 流一直向client寫入資料,直到逾時或異常才返迴響應。串連斷開後client再次請求服務端。屬於長輪詢的一種。
4. 服務端的資訊實現(點對點。公布/訂閱)。JMS 訊息系統
訊息是系統或組件間通訊的一種低耦合方式。是系統級非同步架構的基礎。
在 Web 訊息推送中,服務端管理應用狀態,當狀態發生變遷時須要通知client。完畢訊息推送。
4.1. Pushlets 組件
4.2. Java Message Service
須要重點關注例如以下技術點:
訊息域
● 點對點
僅僅有一個client能夠接收到訊息。
● 公布/訂閱
廣播給訂閱的client。可配置持久化訂閱。
訊息確認
● 會話本地事務提交時會對收到的訊息進行確認,復原時將重傳全部訊息
● 非本地事務確認:Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNO、Session.DUPS_OK_ACKNOWLEDGE
4.3. 邏輯架構
JMS 訊息系統為單獨的通訊匯流排服務獨立於應用系統。Pushlets 為應用系統中的一個組件。
訊息表管理組件提供訊息新增。以及對推送過的訊息記錄的查詢、刪除。
推時序
關鍵點
● 服務層訊息處理
JMS 對於應用開發是透明的,應用僅僅需調用封裝好的發送介面,繼承監聽介面。發送時依據應用情境設定主題屬性,監聽處理時依據訊息屬性實現處理邏輯。
● 訊息表管理
須要使用定時任務或手動觸發清除曆史訊息。
● Pushlets 配置,License 問題:Pushlets 是以 LGPL 開源的。對於商業項目使用時必須進行封裝:《基於 Pushlets 的訊息推送設計》。
5. 解決方式總結5.1. 雲方案(推薦)::百度雲?極光?個推?
作為Android開發人員,在做應用開發時我們經常會碰到訊息推送。由於Android不像蘋果,本身沒有訊息推送機制,通常採用的是基於XMPP協議 的推送,但這樣的開發非常麻煩,因此在市場上應運而生了一種封裝好的推送方式:極光推送。它的出現大大節省了開發時間,極光推送一度佔據移動開發的市場,可是 近期,百度推出了新的推送方式:百度雲推送,在市場的反應也相當不錯。作為開發人員,有時候不知道選擇哪一種方式的推送合適,以下就將具體介紹下這兩者的區 別和優勢,希望你能從中找到答案。
5.2. socket。
。
須要Flash XMLSocket、Java Applet 等外掛程式支援
能夠使用通訊端介面進行全雙工系統通訊。能夠通過 Flash XMLSocket、Java Applet 技術實現。
但因為實現方案與廠商技術綁定過緊。不屬於 Web 標準化範疇。而且存在一些限制(通訊port開啟安全、client外掛程式),這裡不進行描寫敘述。
5.3. mina自己socket實現5.4. websocket html55.5. Comet4J
是一個微型的即時推送架構。它分為服務端 與client兩部分,你僅僅要將server端(JAR檔案。眼下僅支援Tomcat6、7)放入WEB-INF\lib,client(JavaScript檔案)引入到 頁面,那麼你的應用就具備了向client推送資訊的能力,而你僅須要在server端調用Comet4J所提供發送方法,資訊就會被主動的推送到客戶的瀏覽器上。
準備工作
下載服務端jar檔案
Comet4J眼下僅支援Tomcat6、7版本號碼,依據您所使用的Tomcat版本號碼下載【comet4j-tomcat6.jar】或【comet4j-tomcat7.jar】檔案放置到WEB項目的WEB-INF\lib檔案夾下
omet4J(Comet for Java)是一個純粹基於AJAX(XMLHTTPRequest)的server推送架構。訊息以JSON方式傳遞,具備長輪詢、長串連、自己主動選擇三種工作模式
6. 工作模式瀏覽器支援情況
支援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 |
未測試 |
未知 |
未知 |
7. 參考
comet4j java服務端推送訊息到web頁面執行個體 - shadowsick的專欄 - 部落格頻道 - CSDN.NET.htm
訊息推送機制技術設計_百度文庫.htm
百度雲?極光?個推? - 51CTO.COM.htm
atitit.web 推送實現方案集合