XMPP與HTTP的比較(http://www.cnblogs.com/jiyuqi/tag/xmpp/)
XMPP的優勢
1. 推送資料
HTTP只能從伺服器哪裡請求資料,除非伺服器正在響應客戶端請求,否則不能向客戶端傳送資料。但XMPP連線是雙向的,任何一方在任何時候都可以向另外一方傳送資料,只要連線是開啟狀態。
2 防火牆友好
XMPP對防火牆和NAT友好,因為伺服器到客戶端的連線是由客戶端發起的,一旦連線,伺服器就可以將其所需要的資料推送給客戶端。
3. 增強的安全性
XMPP構建在TLS和SASL上,具有更好的安全性
4. 更加豐富的工具箱
XMPP支援更多的操作
XMPP的不足
1. XMPP是有狀態協議
2. XMPP的生態系統較小
3. XMPP有更大的開銷
XMPP未對短期會話和簡單請求進行優化,建立、維護和銷燬XMPP都需要一些資源。
對於更長的連線和更加複雜的互動,XMPP和HTTP的開銷可以忽略不計。
橋接XMPP與Web
主流瀏覽器暫時沒有支援XMPP協議,但是可以通過設定和程式設計在HTTP連線上建立高效的XMPP會話通道。這種通道的建立使用到了名為HTTP長連線的技術。通過聯合使用一個簡單的基於HTTP的管理協議以及XMPP連線管理器,我們可以將XMPP(所有功能)帶入到HTTP應用程式中。
長輪詢
是早期定時重新整理網頁獲取資料更新的方法改進,服務端通過維持一個空連線,即時通知客戶端資料變更。因為每個請求均可以持續較長時間,因此稱為長輪詢。人們已經設計了多個庫和協議來利用長輪詢技術,XMPP是其中一個較早實現,在XMPP中,這種橋接被稱為BOSH(Bidirection stream Over Synchronous HTTP,在同步HTTP上傳遞雙向資料流)。
管理連線
XMPP連線可以持續相當長的時間,但HTTP請求確相當短。連線管理器負責維護第三方的XMPP連線並通過HTTP長連線技術提供對連線的訪問。
瀏覽器和連線管理器都使用BOSH協議通過HTTP通訊,並提供了安全功能,連線管理器與服務端通訊就像一個普通的客戶端一樣,延時也比較低。
而且連線管理器還有如下的優勢:
客戶端可以切換網路
託管穩固,可以容忍故障
可好性好,連線管理器快取資料
對防火牆友好(執行與HTTP埠)
讓Javascript理解XMPP協議
通過Javascript的Strophe庫來實現,可以隱藏底層細節並具有很好的效率。
構建XMPP應用程式
瀏覽器平臺
可以選用jQuery操作使用者資料及使用者介面。
XMPP伺服器
可以選用Tigese或者OpenFire
協議擴充套件
如果有擴充套件協議的需求,應該首先試著組合現有協議或者將協議設計的儘量簡潔。