XMPP

即時(shí)通訊技術(shù)(IM)

支持用戶在線交談缀棍,如果要發(fā)送一條消息,用戶需要打開一個(gè)小窗口欣鳖,以便于讓用戶機(jī)器朋友在其中輸入信息并讓交談雙方都看到交談的內(nèi)容

XMPP起源

XMPP是一種基于XML的協(xié)議漫蛔,它繼承了在XML環(huán)境中靈活的發(fā)展性抛蚤。這表明XMPP是可擴(kuò)展的低淡⌒昭裕可以通過發(fā)送擴(kuò)展的信息來處理用戶的需求瞬项,以及在 XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且何荚,XMPP包含了針對(duì)服務(wù)器端的軟件協(xié)議囱淋,使之能與另一個(gè)服務(wù)器進(jìn)行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個(gè)配置好的系統(tǒng)添加功能

XMPP的核心XML流傳輸協(xié)議的定義使得XMPP能夠在一個(gè)比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺(tái)上餐塘。借助于XML易于解析和閱讀的特性妥衣,使得XMPP的協(xié)議能夠非常漂亮

XMPP的即時(shí)通訊擴(kuò)展應(yīng)用部分是根據(jù)IETF在這之前對(duì)即時(shí)通訊的一個(gè)抽象定義的,與其他業(yè)已得到廣泛使用的即時(shí)通訊協(xié)議戒傻,諸如AIM税手,QQ等有功能完整,完善等先進(jìn)性

XMPP的擴(kuò)展協(xié)議Jingle使得其支持語音和視頻需纳,目前iOS尚不支持

XMPP的官方文檔RFC 3920

XMPP協(xié)議曾經(jīng)是Google力推的即時(shí)通信協(xié)議芦倒,其代表作品是GTalk

Google Talk(GTalk)

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

由于Google Talk是基于Jabber開源標(biāo)準(zhǔn),這種標(biāo)準(zhǔn)允許用戶和其它的即時(shí)訊息系統(tǒng)相連掂器,比如蘋果電腦的iChat亚皂,GAIM,Trillian Pro以及Psi国瓮。Google Talk只能夠在Windows平臺(tái)上運(yùn)行

Google Talk的用戶無法使用這種軟件與AIM灭必,MSN Messenger或者雅虎Messenger的用戶進(jìn)行互通

GTalk即將退出歷史舞臺(tái)

2013年5月,在Google I/O大會(huì)上乃摹,Google推出統(tǒng)一跨平臺(tái)聊天應(yīng)用Hangouts(環(huán)聊)取代Google Talk

XMPP定義

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

XMPP可用于服務(wù)類實(shí)時(shí)通訊禁漓、表示和需求響應(yīng)服務(wù)中的XML數(shù)據(jù)元流式傳輸。XMPP以Jabber協(xié)議為基礎(chǔ)孵睬,而Jabber是即時(shí)通訊中常用的開放式協(xié)議

XMPP是基于XML的協(xié)議播歼,用于即時(shí)消息(IM)以及在線現(xiàn)場(chǎng)探測(cè)。促進(jìn)服務(wù)器之間的準(zhǔn)即時(shí)操作掰读。這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息秘狞,即使其操作系統(tǒng)和瀏覽器不同

XMPP的基本結(jié)構(gòu)

XMPP是一個(gè)典型的C/S架構(gòu),而不是像大多數(shù)即時(shí)通訊軟件一樣蹈集,使用P2P客戶端到客戶端的架構(gòu)烁试,也就是說在大多數(shù)情況下,當(dāng)兩個(gè)客戶端進(jìn)行通訊時(shí)拢肆, 他們的消息都是通過服務(wù)器傳遞的减响。采用這種架構(gòu)靖诗,主要是為了簡(jiǎn)化客戶端,將大多數(shù)工作放在服務(wù)器端進(jìn)行

XMPP中定義了三個(gè)角色辩蛋,客戶端呻畸,服務(wù)器,網(wǎng)關(guān)悼院。通信能夠在這三者的任意兩個(gè)之間雙向發(fā)生

服務(wù)器同時(shí)承擔(dān)了客戶端信息記錄伤为,連接管理和信息的路由功能

網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信)据途,MSN绞愚,ICQ等

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

XMPP工作原理

節(jié)點(diǎn)連接到服務(wù)器

服務(wù)器利用本地目錄系統(tǒng)中的證書對(duì)其認(rèn)證

節(jié)點(diǎn)指定目標(biāo)地址颖医,讓服務(wù)器告知目標(biāo)狀態(tài)

服務(wù)器查找位衩、連接并進(jìn)行相互認(rèn)證

節(jié)點(diǎn)之間進(jìn)行交互

傳輸內(nèi)容

XMPP應(yīng)用傳輸?shù)氖桥c即時(shí)通訊相關(guān)的指令。在以前這些命令要么用二進(jìn)制的形式發(fā)送(比如QQ)熔萧,要么用純文本指令加空格加參數(shù)加換行符的方式發(fā)送(比如MSN)

而XMPP傳輸?shù)募磿r(shí)通訊指令的邏輯與以往相仿糖驴,只是協(xié)議的形式變成了XML格式的純文本。這不但使得解析容易了佛致,人也容易閱讀了贮缕,方便了開發(fā)和查錯(cuò)

而XMPP的核心部分就是一個(gè)在網(wǎng)絡(luò)上分片段發(fā)送XML的流協(xié)議。這個(gè)流協(xié)議是XMPP的即時(shí)通訊指令的傳遞基礎(chǔ)俺榆,也是一個(gè)非常重要的可以被進(jìn)一步利用的網(wǎng)絡(luò)基礎(chǔ)協(xié)議感昼。可以說罐脊,XMPP用TCP傳的是XML流

XMPP的優(yōu)點(diǎn)

優(yōu)點(diǎn)

開放

標(biāo)準(zhǔn)(XMPP的技術(shù)規(guī)格已被定義在RFC 3920及RFC 3921)

證實(shí)可用

分散

安全

可擴(kuò)展

缺點(diǎn)

數(shù)據(jù)負(fù)載過重

沒有二進(jìn)制傳輸

通訊的實(shí)現(xiàn)

建立通道

連接服務(wù)器

連接成功

驗(yàn)證成功

發(fā)送上線狀態(tài)

通道收到狀態(tài)事件

通道收到消息事件

XMPP框架常用擴(kuò)展

XEP-0045: 多用戶聊天

XEP-0060: 發(fā)布-訂閱

XEP-0065: SOCKS5字節(jié)流

XEP-0085: 聊天狀態(tài)通知

XEP-0096: 文件傳輸

XEP-0172: 用戶昵稱

CoreDataStorage: 數(shù)據(jù)存儲(chǔ)

Reconnect:重新連接

Roster:花名冊(cè)

xmpp的傳輸小結(jié)

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


XMPP核心文件

XMPPStream:是開發(fā)過程中最主要交互的類宵溅,所有擴(kuò)展和自定義代碼均要基于此類進(jìn)行

XMPPParser:供XMPPStream解析使用

XMPPJID:提供了一個(gè)不可變JID的實(shí)現(xiàn),遵守NSCopying協(xié)議和NSCoding協(xié)議

XMPPElement:以下三個(gè)XMPP元素的基類

XMPPIQ:請(qǐng)求

XMPPMessage:消息

XMPPPresence:出席

XMPPModule:開發(fā)XMPP擴(kuò)展時(shí)使用

XMPPLogging:XMPP的日志框架

XMPPInternal:整個(gè)XMPP框架內(nèi)部使用的核心和高級(jí)底層內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末上炎,一起剝皮案震驚了整個(gè)濱河市层玲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌反症,老刑警劉巖辛块,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異铅碍,居然都是意外死亡润绵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門胞谈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尘盼,“玉大人憨愉,你說我怎么就攤上這事∏渖樱” “怎么了配紫?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)午阵。 經(jīng)常有香客問我躺孝,道長(zhǎng),這世上最難降的妖魔是什么底桂? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任植袍,我火速辦了婚禮,結(jié)果婚禮上籽懦,老公的妹妹穿的比我還像新娘于个。我一直安慰自己,他們只是感情好暮顺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布厅篓。 她就那樣靜靜地躺著,像睡著了一般捶码。 火紅的嫁衣襯著肌膚如雪羽氮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天宙项,我揣著相機(jī)與錄音乏苦,去河邊找鬼株扛。 笑死尤筐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洞就。 我是一名探鬼主播盆繁,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旬蟋!你這毒婦竟也來了油昂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤倾贰,失蹤者是張志新(化名)和其女友劉穎冕碟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匆浙,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡安寺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了首尼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挑庶。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡言秸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迎捺,到底是詐尸還是另有隱情举畸,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布凳枝,位于F島的核電站抄沮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏范舀。R本人自食惡果不足惜合是,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锭环。 院中可真熱鬧聪全,春花似錦、人聲如沸辅辩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玫锋。三九已至蛾茉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撩鹿,已是汗流浹背谦炬。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留节沦,地道東北人键思。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像甫贯,于是被迫代替她去往敵國(guó)和親吼鳞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一叫搁、即時(shí)通訊技術(shù) 即時(shí)通訊技術(shù)(IM -- Instant Messaging)-> 支持用戶在線實(shí)時(shí)交談 有許多...
    iOS_成才錄閱讀 8,477評(píng)論 10 76
  • 一赔桌、即時(shí)通訊簡(jiǎn)單介紹 1、簡(jiǎn)單說明 即時(shí)通訊技術(shù)(IM)支持用戶在線實(shí)時(shí)交談渴逻。如果要發(fā)送一條信息疾党,用戶需要打開一個(gè)...
    行走的菜譜閱讀 605評(píng)論 0 0
  • 大學(xué)學(xué)習(xí)網(wǎng)絡(luò)基礎(chǔ)的時(shí)候老師講過蜓氨,網(wǎng)絡(luò)由下往上分為物理層、數(shù)據(jù)鏈路層队伟、網(wǎng)絡(luò)層穴吹、傳輸層、會(huì)話層嗜侮、表示層和應(yīng)用層港令。通過初...
    西門丨不吹雪閱讀 1,791評(píng)論 0 19
  • iOS開發(fā)拓展篇-XMPP簡(jiǎn)單介紹 一、即時(shí)通訊簡(jiǎn)單介紹 1锈颗、簡(jiǎn)單說明 即時(shí)通訊技術(shù)(IM)支持用戶在線實(shí)時(shí)交談顷霹。...
    lucifrom_long閱讀 630評(píng)論 0 8
  • 一、即時(shí)通訊簡(jiǎn)單介紹 1击吱、簡(jiǎn)單說明 即時(shí)通訊技術(shù)(IM)支持用戶在線實(shí)時(shí)交談淋淀。如果要發(fā)送一條信息,用戶需要打開一個(gè)...
    GitHubPorter閱讀 3,444評(píng)論 0 2