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

檀志文發表於2017-12-14

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

  協議擴充套件

如果有擴充套件協議的需求,應該首先試著組合現有協議或者將協議設計的儘量簡潔。

相關文章