基於XMPP的即時通訊系統的創建(三)— 程序設計概覽

XMPP與HTTP的比較

XMPP的優點

Ÿ   1. 推送數據編程

       HTTP只能從服務器哪裏請求數據,除非服務器正在響應客戶端請求,不然不能向客戶端發送數據。但XMPP鏈接是雙向的,任何一方在任什麼時候候均可以向另一方發送數據,只要鏈接是打開狀態。瀏覽器

Ÿ   2. 防火牆友好緩存

       XMPP對防火牆和NAT友好,由於服務器到客戶端的鏈接是由客戶端發起的,一旦鏈接,服務器就能夠將其所須要的數據推送給客戶端。安全

Ÿ   3. 加強的安全性服務器

       XMPP構建在TLS和SASL上,具備更好的安全性網絡

Ÿ   4. 更加豐富的工具箱工具

       XMPP支持更多的操做優化

XMPP的不足

Ÿ   1. XMPP是有狀態協議設計

Ÿ   2. XMPP的生態系統較小ip

Ÿ   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

Ÿ   協議擴展

若是有擴展協議的需求,應該首先試着組合現有協議或者將協議設計的儘可能簡潔。

相關文章
相關標籤/搜索