atitit.web 推送實現方案集合html
1. 倆中模式 Push/Pull 1html5
2. 需要實現的特性 2java
2.3. 提供鏈接上線前、上線、下線前、下線、發送消息等多種可處理事件。緩存
2tomcat
2.4. 消息緩存機制。確保長輪詢工做模式下不丟失消息。 2安全
2.5. client正常下線,服務端可立刻感知。 2websocket
2.6. client異常中止工做,服務端可定時檢查並感知。架構
2.7. 以註冊通道應用的方式。讓開發人員對框架功能進行擴展。實現本身的應用。 2
3. client實現::長輪詢(簡單輪詢,長輪詢,HTTP 流)、長鏈接、本身主動選擇三種工做模式 3
4. 服務端的信息實現(點對點,公佈/訂閱)。JMS 消息系統 4
需要Flash XMLSocket、Java Applet 等插件支持 7
server推送(Server Push) 推送技術的基礎思想是將瀏覽器主動查詢信息改成server主動發送信息。server發送一批數據,瀏覽器顯示這些數據。同一時候保證與server的鏈接。
當server需要再次發送一批數據時,瀏覽器顯示數據並保持鏈接。之後。server仍然可以發送批量數據,瀏覽器繼續顯示數據,依次類推。 client拉曳(Client Pull) 在
做者:: 老哇的爪子 Attilax 艾龍, EMAIL:1466519819@qq.com
轉載請註明來源: http://blog.csdn.net/attilax
功能特性
眼下的 Web 應用是基於 HTTP 協議的。其規定了請求-響應的處理模型,位於應用層的單工通信模式使得純粹意義上的服務端推送方式變得難以實現。
爲了基於 HTTP 協議進行「推送」實現。可由client發起 HTTP 請求輪詢,服務端在請求後返回響應。
依據輪詢時間、請求處理方式。分爲下面三種推。
client通常以定時方式發起請求,服務端處理後返回響應。
● 原理、client/服務端實現簡單
● 可依據應用場景調整輪詢時間間隔
● 服務端需要處理大量請求
client發起請求後服務端將該請求掛起(不返回響應),直到超時、異常或需要處理響應(推內容)才返回。client收到響應後再次請求(即輪詢)服務端。並處理響應。
● 實時性高
● 服務端需要管理掛起請求
client發起請求後server端處理請求,並經過 HTTP 流一直向client寫入數據,直到超時或異常才返回響應。鏈接斷開後client再次請求服務端。屬於長輪詢的一種。
消息是系統或組件間通信的一種低耦合方式。是系統級異步架構的基礎。
在 Web 消息推送中,服務端管理應用狀態,當狀態發生變遷時需要通知client。完畢消息推送。
需要重點關注例如如下技術點:
● 點對點
僅僅有一個client可以接收到消息。
● 公佈/訂閱
廣播給訂閱的client。可配置持久化訂閱。
● 會話本地事務提交時會對收到的消息進行確認,回滾時將重傳所有消息
● 非本地事務確認: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 等插件支持
可以使用套接字接口進行全雙工通信。可以經過 Flash XMLSocket、Java Applet 技術實現。
但由於實現方案與廠商技術綁定過緊。不屬於 Web 標準化範疇。並且存在一些限制(通信port開啓安全、client插件),這裏不進行描寫敘述。
是一個微型的即時推送框架。它分爲服務端 與client兩部分,你僅僅要將server端(JAR文件。眼下僅支持Tomcat六、7)放入WEB-INF\lib,client(JavaScript文件)引入到 頁面,那麼你的應用就具有了向client推送信息的能力,而你僅需要在server端調用Comet4J所提供發送方法,信息就會被主動的推送到客戶的瀏覽器上。
Comet4J眼下僅支持Tomcat六、7版本號,依據您所使用的Tomcat版本號下載【comet4j-tomcat6.jar】或【comet4j-tomcat7.jar】文件放置到WEB項目的WEB-INF\lib文件夾下
omet4J(Comet for Java)是一個純粹基於AJAX(XMLHTTPRequest)的server推送框架。消息以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