天天看點

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

XMPP與HTTP的比較

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

Ÿ   協定擴充

如果有擴充協定的需求,應該首先試着組合現有協定或者将協定設計的盡量簡潔。