標籤:android style blog http color java 使用 os
atitit.web 推送實現方案集合
1. 倆中模式 Push/Pull 1
2. 需要實現的特性 2
2.1. 推送訊息廣播。 2
2.2. 推送定向訊息。 2
2.3. 提供串連上線前、上線、下線前、下線、發送訊息等多種可處理事件。 2
2.4. 訊息緩衝機制,確保長輪詢工作模式下不丟失訊息。 2
2.5. 用戶端正常下線,服務端可立即感知。 2
2.6. 用戶端異常停止工作,服務端可定時檢查並感知。 2
2.7. 以註冊通道應用的方式,讓開發人員對架構功能進行擴充,實現自己的應用。 2
3. 用戶端實現::長輪詢(簡單輪詢,長輪詢,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 Push) 推送技術的基礎思想是將瀏覽器主動查詢資訊改為伺服器主動發送資訊。伺服器發送一批資料,瀏覽器顯示這些資料,同時保證與伺服器的串連。當伺服器需要再次發送一批資料時,瀏覽器顯示資料並保持串連。以後,伺服器仍然可以發送批量資料,瀏覽器繼續顯示資料,依次類推。 用戶端拉曳(Client Pull) 在
作者:: 老哇的爪子 Attilax 艾龍, EMAIL:[email protected]
轉載請註明來源: http://blog.csdn.net/attilax
2. 需要實現的特性
功能特性
2.1. 推送訊息廣播。2.2. 推送定向訊息。2.3. 提供串連上線前、上線、下線前、下線、發送訊息等多種可處理事件。2.4. 訊息緩衝機制,確保長輪詢工作模式下不丟失訊息。2.5. 用戶端正常下線,服務端可立即感知。2.6. 用戶端異常停止工作,服務端可定時檢查並感知。2.7. 以註冊通道應用的方式,讓開發人員對架構功能進行擴充,實現自己的應用。
3. 用戶端實現::長輪詢(簡單輪詢,長輪詢,HTTP 流)、長串連、自動選擇三種工作模式
3.1. HTTP 請求輪詢
目前的 Web 應用是基於 HTTP 協議的,其規定了請求-響應的處理模型,位於應用程式層的單工通訊模式使得純粹意義上的服務端推送方式變得難以實現。
為了基於 HTTP 協議進行“推送”實現,可由用戶端發起 HTTP 請求輪詢,服務端在請求後返迴響應。
根據輪詢時間、請求處理方式,分為以下三種推。
3.2. 簡單輪詢
用戶端一般以定時方式發起請求,服務端處理後返迴響應。
● 原理、用戶端/服務端實現簡單
● 可根據應用情境調整輪詢時間間隔
● 服務端需要處理大量請求
3.3. 長輪詢
用戶端發起請求後服務端將該請求掛起(不返迴響應),直到逾時、異常或需要處理響應(推內容)才返回。用戶端收到響應後再次請求(即輪詢)服務端,並處理響應。
● 即時性高
● 服務端需要管理掛起請求
3.4. HTTP 流
用戶端發起請求後伺服器端處理請求,並通過 HTTP 流一直向用戶端寫入資料,直到逾時或異常才返迴響應。串連斷開後用戶端再次請求服務端,屬於長輪詢的一種。
4. 服務端的資訊實現(點對點,發布/訂閱),JMS 訊息系統
訊息是系統或組件間通訊的一種低耦合方式,是系統級非同步架構的基礎。
在 Web 訊息推送中,服務端管理應用狀態,當狀態發生變遷時需要通知用戶端,完成訊息推送。
4.1. Pushlets 組件
4.2. Java Message Service
需要重點關注如下技術點:
訊息域
● 點對點
只有一個用戶端可以接收到訊息。
● 發布/訂閱
廣播給訂閱的用戶端。可配置持久化訂閱。
訊息確認
● 會話本地事務提交時會對收到的訊息進行確認,復原時將重傳所有訊息
● 非本地事務確認: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 標準化範疇,並且存在一些限制(通訊連接埠開啟安全、用戶端外掛程式),這裡不進行描述。
5.3. mina自己socket實現5.4. websocket html55.5. Comet4J
是一個微型的即時推送架構,它分為服務端 與用戶端兩部分,你只要將伺服器端(JAR檔案,目前僅支援Tomcat6、7)放入WEB-INF\lib,用戶端(JavaScript檔案)引入到 頁面,那麼你的應用就具備了向用戶端推送資訊的能力,而你僅需要在伺服器端調用Comet4J所提供發送方法,資訊就會被主動的推送到客戶的瀏覽器上。
準備工作
下載服務端jar檔案
Comet4J目前僅支援Tomcat6、7版本,根據您所使用的Tomcat版本下載【comet4j-tomcat6.jar】或【comet4j-tomcat7.jar】檔案放置到WEB項目的WEB-INF\lib目錄下
omet4J(Comet for Java)是一個純粹基於AJAX(XMLHTTPRequest)的伺服器推送架構,訊息以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