iOS XMPP

一歼指、即時(shí)通訊技術(shù)

  • 即時(shí)通訊技術(shù)IM -- Instant Messaging)-> 支持用戶在線實(shí)時(shí)交談

  • 有許多的IM系統(tǒng)爹土,如AOL、Yahoo IM踩身、 MSN以及QQ胀茵,它們最大的區(qū)別在于各自通訊協(xié)議的實(shí)現(xiàn),所以n即時(shí)通訊技術(shù)的核心在于它的傳輸協(xié)議

  • 協(xié)議 -> 用來(lái)說(shuō)明信息在網(wǎng)絡(luò)上如何傳輸

    • 如果有了統(tǒng)一的傳輸協(xié)議挟阻,那么應(yīng)當(dāng)可以實(shí)現(xiàn)各個(gè)IM之間的直接通訊

    • 為了創(chuàng)建即時(shí)通訊的統(tǒng)一標(biāo)準(zhǔn)琼娘,目前已經(jīng)出現(xiàn)過(guò)的IM協(xié)議包括:

      • IETF的對(duì)話初始協(xié)議(SIP): SIP是建立VOIP連接的IETF標(biāo)準(zhǔn),而VOIP就是網(wǎng)絡(luò)電話
      • 即時(shí)通訊對(duì)話初始協(xié)議和表示擴(kuò)展協(xié)議(SIMPLE)
      • 應(yīng)用交換協(xié)議(APEX)赁濒、顯示和即時(shí)通訊協(xié)議(PRIM)
      • 基于XML且開放的可擴(kuò)展通訊和表示協(xié)議(XMPP)協(xié)議(常稱為 Jabber 協(xié)議)
    • 人們多次努力轨奄,試圖統(tǒng)一各大主要IM供應(yīng)商的標(biāo)準(zhǔn)(AOL、Yahoo 及 Microsoft)拒炎,但無(wú)一成功挪拟,且每一種IM仍然繼續(xù)使用自己所擁有的協(xié)議

二、XMPP簡(jiǎn)介

XMPP誕生的由來(lái)

  • 都是遵守XMPP即時(shí)通訊協(xié)議
    • 設(shè)計(jì)一款全世界都使用的即時(shí)通訊協(xié)議击你,無(wú)論使用什么即時(shí)通訊軟件玉组,都可以互聯(lián)互通

XMPP起源

  • XMPP是基于XML的協(xié)議,用于即時(shí)消息(IM)以及在線現(xiàn)場(chǎng)探測(cè)丁侄。最初惯雳,XMPP作為一個(gè)框架開發(fā),目標(biāo)是支持企業(yè)環(huán)境內(nèi)的即時(shí)消息傳遞和聯(lián)機(jī)狀態(tài)應(yīng)用程序鸿摇。
  • XMPP的前身是Jabber(1998年)石景,是一個(gè)開源組織定義的網(wǎng)絡(luò)即時(shí)通信協(xié)議
  • XMPP是一個(gè)分散型通信網(wǎng)絡(luò)
    • 這意味著,只要網(wǎng)絡(luò)基礎(chǔ)設(shè)施允許拙吉,任何XMPP用戶都可以向其他任何XMPP用戶傳遞消息潮孽。
    • 多個(gè)XMPP服務(wù)器也可以通過(guò)一個(gè)專門的“服務(wù)器-服務(wù)器”協(xié)議相互通信,提供了創(chuàng)建分散型社交網(wǎng)絡(luò)和協(xié)作框架的可能性
XMPP工作原理示意圖.png

XMPP概述

  • XMPP是一種基于XML的協(xié)議

    • 它繼承了在XML(可擴(kuò)展標(biāo)記語(yǔ)言)環(huán)境中靈活的發(fā)展性筷黔。這表明XMPP是可擴(kuò)展的往史。
    • XMPP包含了針對(duì)服務(wù)器端的軟件協(xié)議,使之能與另一個(gè)進(jìn)行通話佛舱,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個(gè)配置好的系統(tǒng)添加功能
  • XMPP的核心XML流傳輸協(xié)議的定義

    • 使得XMPP能夠在一個(gè)比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺(tái)上椎例。借助于XML易于解析和閱讀的特性,使得XMPP的協(xié)議能夠非常漂亮
  • XMPP的擴(kuò)展協(xié)議Jingle使得其支持語(yǔ)音和視頻请祖,目前iOS尚不支持

  • XMPP的官方文檔是RFC 3920

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

Google Talk(GTalk)

  • Google Talk是Google的IM工具,除了具有IM功能外损拢,另外還加上了Voip功能陌粹,“界面清新大方”,可直接鏈接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的用戶無(wú)法使用這種軟件與AIM,MSN Messenger或者雅虎Messenger的用戶進(jìn)行互通

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

  • Google Hangouts不支持XMPP協(xié)議,Google Hangouts用戶與如XMPP協(xié)議的強(qiáng)有力支持者jabber.org之間的交流無(wú)法進(jìn)行

  • Hangouts目前在中國(guó)大陸無(wú)法使用抒和,尚不支持iOS7.0

  • 目前矫渔,Google Wave是基于XMPP協(xié)議的,并且Google還開發(fā)Jingle擴(kuò)展進(jìn)行基于XMPP協(xié)議的視頻聊天摧莽。盡管Google尚未宣布Talk的關(guān)閉日期庙洼,不過(guò)從Google關(guān)閉Reader和iCal支持來(lái)看,Talk關(guān)閉之日不會(huì)太遠(yuǎn)

三镊辕、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):典型的C/S架構(gòu)

  • XMPP是一個(gè)典型的C/S架構(gòu)
    • 而不是像大多數(shù)即時(shí)通訊軟件一樣亏娜,使用P2P客戶端到客戶端的架構(gòu)
    • 也就是說(shuō)在大多數(shù)情況下厦章,當(dāng)兩個(gè)客戶端進(jìn)行通訊時(shí), 他們的消息都是通過(guò)服務(wù)器傳遞的照藻。
    • 優(yōu)點(diǎn):采用這種架構(gòu),主要是為了簡(jiǎn)化客戶端汗侵,將大多數(shù)工作放在服務(wù)器端進(jìn)行
架構(gòu).png
  • 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ò)形式:

    • 單客戶端通過(guò)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)行交互
XMPP工作原理示意圖.png

六抬虽、傳輸內(nèi)容

  • XMPP應(yīng)用傳輸?shù)氖桥c即時(shí)通訊相關(guān)的指令
  • 而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é)議,可以說(shuō)XMPP用TCP傳的是XML流

七序苏、XMPP的優(yōu)缺點(diǎn)

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

  • 開放
  • 標(biāo)準(zhǔn)(XMPP的技術(shù)規(guī)格已被定義在RFC 3920及RFC 3921)
  • 證實(shí)可用手幢,谷歌證實(shí)了GTalk
  • 分散
  • 安全
  • 可擴(kuò)展

缺點(diǎn)

  • 數(shù)據(jù)負(fù)載過(guò)重XML
  • 沒(méi)有二進(jìn)制傳輸

八、XMPP的傳輸小結(jié)

  • XMPP是一種類似于HTTP協(xié)議一種數(shù)據(jù)傳輸協(xié)議忱详,
    • 其過(guò)程就如同“解包裝--〉包裝”的過(guò)程围来。只需要理解其接收的類型及返回的類型,便可以很好的利用XMPP來(lái)進(jìn)行數(shù)據(jù)通訊
  • XMPP官方網(wǎng)站——http://xmpp.org

九踱阿、XMPP——JID

  • 每個(gè) XMPP客戶端用戶必須擁有一個(gè)全局惟一標(biāo)識(shí)符管钳。
    • 基于歷史原因,這些標(biāo)識(shí)符稱為Jabber ID或JID软舌。鑒于協(xié)議的分布式特征才漆,JID應(yīng)包含聯(lián)系用戶所需的所有信息,JID的結(jié)構(gòu)類似于電子郵件地址佛点,但不要求 JID同時(shí)也是有效的電子郵件收件人
  • 客戶端和服務(wù)器節(jié)點(diǎn)醇滥,被統(tǒng)稱為XMPP實(shí)體,都擁有JID超营。例如:SomeCorp公司的員工 John Doe可能擁有JID:用戶名@服務(wù)器名稱
    • John.Doe@somecorp.com
      • 其中somecorp.com是 SomeCorp公司的XMPP服務(wù)器的地址
      • John.Doe是John Doe的用戶名

十鸳玩、環(huán)境搭建

  • 開發(fā)客戶端:ios 、Xcode開發(fā)選擇

  • 服務(wù)器:Openfire選擇

  • 數(shù)據(jù)庫(kù):MySql選擇


    環(huán)境選擇.png
  • 安裝MySQL管理工具——mysql-workbench

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末演闭,一起剝皮案震驚了整個(gè)濱河市不跟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌米碰,老刑警劉巖窝革,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異吕座,居然都是意外死亡虐译,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門吴趴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)漆诽,“玉大人,你說(shuō)我怎么就攤上這事∠崾茫” “怎么了兰英?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蚪腐。 經(jīng)常有香客問(wèn)我箭昵,道長(zhǎng),這世上最難降的妖魔是什么回季? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任家制,我火速辦了婚禮,結(jié)果婚禮上泡一,老公的妹妹穿的比我還像新娘颤殴。我一直安慰自己,他們只是感情好鼻忠,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布涵但。 她就那樣靜靜地躺著,像睡著了一般帖蔓。 火紅的嫁衣襯著肌膚如雪矮瘟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天塑娇,我揣著相機(jī)與錄音澈侠,去河邊找鬼。 笑死埋酬,一個(gè)胖子當(dāng)著我的面吹牛哨啃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播写妥,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼拳球,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了珍特?” 一聲冷哼從身側(cè)響起祝峻,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扎筒,沒(méi)想到半個(gè)月后呼猪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砸琅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轴踱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症脂。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诱篷,到底是詐尸還是另有隱情壶唤,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布棕所,位于F島的核電站闸盔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏琳省。R本人自食惡果不足惜迎吵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望针贬。 院中可真熱鬧击费,春花似錦、人聲如沸桦他。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)快压。三九已至圆仔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔫劣,已是汗流浹背坪郭。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拦宣,地道東北人截粗。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鸵隧,于是被迫代替她去往敵國(guó)和親绸罗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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