開源移動通訊架構與XMPP

jopen 10年前發布 | 9K 次閱讀 XMPP

XMPP由于上下游良好的開源生態得到了廣泛的采納與應用,但是到了移動為主的時代,XMPP的不足也暴露出來。

 開源移動通訊架構與XMPP

XMPP全稱是Extensible Messaging and Presence Protocol(也稱為Jabber),是一種支持消息及狀態的協議,但在線狀態在移動場景并是一個必需的feature。由于智能手機具有隨時在線的 特點,狀態可以視為永遠在線;即便在app沒有打開的情況下,系統可以通過push等方式發送最新的信息,因此大部分面向移動的通訊軟件直接去掉了狀態的 特性。因此設計成支持多終端狀態的XMPP在移動領域并不是擅長之地。另外一方面XMPP是一種基于XML的協議,它的請求及應答機制也是主要為穩定長連 網絡環境所設計,對于帶寬偏窄及長連不穩定的移動網絡并不是特別優化,因此它的弊端就充分暴露出來了。

移動領域也有不少非XMPP的開源實現,盡管贏得主流認可的不多。比較商業化的有telegram,其特性跟微信比較類似,在一些國家也取得了飛速發展,盡管其宣稱的開源還不完全。國內有前幾天蘑菇街發布的的TeamTalk,其開源地址是 https://github.com/mogutt 從發布的短短幾天來看, star/fork 數非常可觀。其介紹支持企業內部通訊場景,且具有完整的移動端支持。

最近也在考慮在這方面做一些嘗試,一個理想的適合移動時代的IM開源軟件,它應該具有哪些因素?

 

  1. 分布式擴展能力。在XMPP領域,由于Openfire的簡單易用,成為很多團隊首選的方案,但使用Openfire的團隊都需要接著思考擴展openfire的分布式擴展能力,以便承擔更大的用戶訪問規模。
  2. 移動友好的協議,協議具有良好的長連及短連自適應能力,具有數據的增量更新能力,較低的重連成本等。有網友推薦MQTT http://mqtt.org/,尚未深入評估。
  3. 移動SDK,主要實現協議層及網絡邏輯,以簡化客戶端接入及開發成本。
  4. 開發語言,更多考慮一些能帶來編程樂趣的新型語言,在一定程度上,scale的問題可以做到與語言無關。

 

在微博上交流的時候,一些網友還提到了XMPP的federation功能,federation類似郵件協議,利用XMPP可以實現多個域的用戶 互聯互通。但由于此功能對于企業的商業化利益較難看清,因此在過去很長一段時間都沒有得到充分發展。Google最近也放棄了多年來堅持的XMPP federation的支持。

需要補充的是,盡管前面提到XMPP種種問題,但是也別低估一種新協議的認知成本,很多時候選擇XMPP并不是因為它協議強大或多么適合用戶的場 景,而是當大眾群體已經了解一種協議之后,即使這種方式存在種種問題,但還是較難廣泛認可及接受一種方式或協議。在沒有特殊原因的情況下,普通的通訊場景 仍然建議使用XMPP方式。

來自:timyang

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!