XMPP

即時通訊技術(IM)

支持用戶在線交談,如果要發送一條消息,用戶需要打開一個小窗口,以便于讓用戶機器朋友在其中輸入信息并讓交談雙方都看到交談的內容

XMPP起源

XMPP是一種基于XML的協議,它繼承了在XML環境中靈活的發展性。這表明XMPP是可擴展的。可以通過發送擴展的信息來處理用戶的需求,以及在 XMPP的頂端建立如內容發布系統和基于地址的服務等應用程序。而且,XMPP包含了針對服務器端的軟件協議,使之能與另一個服務器進行通話,這使得開發者更容易建立客戶應用程序或給一個配置好的系統添加功能

XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規范的平臺上。借助于XML易于解析和閱讀的特性,使得XMPP的協議能夠非常漂亮

XMPP的即時通訊擴展應用部分是根據IETF在這之前對即時通訊的一個抽象定義的,與其他業已得到廣泛使用的即時通訊協議,諸如AIM,QQ等有功能完整,完善等先進性

XMPP的擴展協議Jingle使得其支持語音和視頻,目前iOS尚不支持

XMPP的官方文檔RFC 3920

XMPP協議曾經是Google力推的即時通信協議,其代表作品是GTalk

Google Talk(GTalk)

Google Talk是Google的IM工具,除了具有IM功能外,另外還加上了Viop功能,“界面清新大方”,可直接鏈接Gmail,接受查看郵件

由于Google Talk是基于Jabber開源標準,這種標準允許用戶和其它的即時訊息系統相連,比如蘋果電腦的iChat,GAIM,Trillian Pro以及Psi。Google Talk只能夠在Windows平臺上運行

Google Talk的用戶無法使用這種軟件與AIM,MSN Messenger或者雅虎Messenger的用戶進行互通

GTalk即將退出歷史舞臺

2013年5月,在Google I/O大會上,Google推出統一跨平臺聊天應用Hangouts(環聊)取代Google Talk

XMPP定義

XMPP:The Extensible Messaging and Presence Protocol(可擴展通訊和表示協議)

XMPP可用于服務類實時通訊、表示和需求響應服務中的XML數據元流式傳輸。XMPP以Jabber協議為基礎,而Jabber是即時通訊中常用的開放式協議

XMPP是基于XML的協議,用于即時消息(IM)以及在線現場探測。促進服務器之間的準即時操作。這個協議可能最終允許因特網用戶向因特網上的其他任何人發送即時消息,即使其操作系統和瀏覽器不同

XMPP的基本結構

XMPP是一個典型的C/S架構,而不是像大多數即時通訊軟件一樣,使用P2P客戶端到客戶端的架構,也就是說在大多數情況下,當兩個客戶端進行通訊時, 他們的消息都是通過服務器傳遞的。采用這種架構,主要是為了簡化客戶端,將大多數工作放在服務器端進行

XMPP中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生

服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能

網關承擔著與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等

基本的網絡形式是單客戶端通過TCP/IP連接到單服務器,然后在之上傳輸XML流

XMPP工作原理

節點連接到服務器

服務器利用本地目錄系統中的證書對其認證

節點指定目標地址,讓服務器告知目標狀態

服務器查找、連接并進行相互認證

節點之間進行交互

傳輸內容

XMPP應用傳輸的是與即時通訊相關的指令。在以前這些命令要么用二進制的形式發送(比如QQ),要么用純文本指令加空格加參數加換行符的方式發送(比如MSN)

而XMPP傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發和查錯

而XMPP的核心部分就是一個在網絡上分片段發送XML的流協議。這個流協議是XMPP的即時通訊指令的傳遞基礎,也是一個非常重要的可以被進一步利用的網絡基礎協議。可以說,XMPP用TCP傳的是XML流

XMPP的優點

優點

開放

標準(XMPP的技術規格已被定義在RFC 3920及RFC 3921)

證實可用

分散

安全

可擴展

缺點

數據負載過重

沒有二進制傳輸

通訊的實現

建立通道

連接服務器

連接成功

驗證成功

發送上線狀態

通道收到狀態事件

通道收到消息事件

XMPP框架常用擴展

XEP-0045: 多用戶聊天

XEP-0060: 發布-訂閱

XEP-0065: SOCKS5字節流

XEP-0085: 聊天狀態通知

XEP-0096: 文件傳輸

XEP-0172: 用戶昵稱

CoreDataStorage: 數據存儲

Reconnect:重新連接

Roster:花名冊

xmpp的傳輸小結

XMPP是一種類似于HTTP協議的一種數據傳輸協議,其過程就如同“解包裝--〉包裝”的過程。只需要理解其接收的類型及返回的類型,便可以很好的利用XMPP來進行數據通訊


XMPP核心文件

XMPPStream:是開發過程中最主要交互的類,所有擴展和自定義代碼均要基于此類進行

XMPPParser:供XMPPStream解析使用

XMPPJID:提供了一個不可變JID的實現,遵守NSCopying協議和NSCoding協議

XMPPElement:以下三個XMPP元素的基類

XMPPIQ:請求

XMPPMessage:消息

XMPPPresence:出席

XMPPModule:開發XMPP擴展時使用

XMPPLogging:XMPP的日志框架

XMPPInternal:整個XMPP框架內部使用的核心和高級底層內容

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容

  • 一、即時通訊技術 即時通訊技術(IM -- Instant Messaging)-> 支持用戶在線實時交談 有許多...
    iOS_成才錄閱讀 8,508評論 10 76
  • 一、即時通訊簡單介紹 1、簡單說明 即時通訊技術(IM)支持用戶在線實時交談。如果要發送一條信息,用戶需要打開一個...
    行走的菜譜閱讀 608評論 0 0
  • 大學學習網絡基礎的時候老師講過,網絡由下往上分為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。通過初...
    西門丨不吹雪閱讀 1,805評論 0 18
  • iOS開發拓展篇-XMPP簡單介紹 一、即時通訊簡單介紹 1、簡單說明 即時通訊技術(IM)支持用戶在線實時交談。...
    lucifrom_long閱讀 635評論 0 8
  • 一、即時通訊簡單介紹 1、簡單說明 即時通訊技術(IM)支持用戶在線實時交談。如果要發送一條信息,用戶需要打開一個...
    GitHubPorter閱讀 3,460評論 0 2