XMPP與HTTP的比較(http://www.cnblogs.com/jiyuqi/tag/xmpp/)
編程
XMPP的優點
瀏覽器
1. 推送數據
緩存
HTTP只能從服務器哪裏請求數據,除非服務器正在響應客戶端請求,不然不能向客戶端發送數據。但XMPP鏈接是雙向的,任何一方在任什麼時候候均可以向另一方發送數據,只要鏈接是打開狀態。
安全
2 防火牆友好服務器
XMPP對防火牆和NAT友好,由於服務器到客戶端的鏈接是由客戶端發起的,一旦鏈接,服務器就能夠將其所須要的數據推送給客戶端。
網絡
3. 加強的安全性
工具
XMPP構建在TLS和SASL上,具備更好的安全性
優化
4. 更加豐富的工具箱
設計
XMPP支持更多的操做
blog
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
協議擴展
若是有擴展協議的需求,應該首先試着組合現有協議或者將協議設計的儘可能簡潔。