iOS開發(fā)拓展篇-XMPP簡單介紹
一识虚、即時通訊簡單介紹
1、簡單說明
即時通訊技術(shù)(IM)支持用戶在線實時交談。如果要發(fā)送一條信息聘裁,用戶需要打開一個小窗口,以便讓用戶及其朋友在其中輸入信息并讓交談雙方都看到交談的內(nèi)容
有許多的IM系統(tǒng)弓千,如AOL IM衡便、Yahoo IM、 MSN以及QQ洋访,它們最大的區(qū)別在于各自通訊協(xié)議的實現(xiàn)镣陕,所以即時通訊技術(shù)的核心在于它的傳輸協(xié)議
協(xié)議用來說明信息在網(wǎng)絡(luò)上如何傳輸,如果有了統(tǒng)一的傳輸協(xié)議姻政,那么應(yīng)當(dāng)可以實現(xiàn)各個IM之間的直接通訊呆抑,為了創(chuàng)建即時通訊的統(tǒng)一標(biāo)準(zhǔn),目前已經(jīng)出現(xiàn)過的IM協(xié)議包括:IETF的對話初始協(xié)議(SIP)和即時通訊對話初始協(xié)議和表示擴展協(xié)議(SIMPLE)汁展、應(yīng)用交換協(xié)議(APEX)鹊碍、顯示和即時通訊協(xié)議(PRIM)及基于XML且開放的可擴展通訊和表示協(xié)議(XMPP)協(xié)議(常稱為 Jabber 協(xié)議)
業(yè)界經(jīng)過多次努力厌殉,試圖統(tǒng)一各大主要IM供應(yīng)商的標(biāo)準(zhǔn)(AOL、Yahoo 及 Microsoft)侈咕,但無一成功公罕,且每一種IM仍然繼續(xù)使用自己所擁有的協(xié)議
2.遵守XMPP即時通訊協(xié)議
設(shè)計一款全世界都使用的即時通訊協(xié)議,無論使用什么即時通訊軟件耀销,都可以互聯(lián)互通楼眷。
3.即時通訊在垂直社交中的意義
和第一代大而全的水平網(wǎng)站(又稱綜合性網(wǎng)站)不同,垂直網(wǎng)站注意力集中在某些特定的領(lǐng)域或某種特定的需求熊尉,提供有關(guān)這個領(lǐng)域或需求的全部深度信息和相關(guān)服務(wù)摩桶,作為互聯(lián)網(wǎng)的新亮點,垂直網(wǎng)站正引起越來越多人的關(guān)注帽揪。在越來越多的網(wǎng)絡(luò)吸引老百姓的注意力時硝清,網(wǎng)民卻逐漸走出時髦、好奇的初級階段转晰,不斷在網(wǎng)上尋找著實際芦拿、實用和實惠。隨著移動互聯(lián)網(wǎng)應(yīng)用的發(fā)展查邢,現(xiàn)在越來越多的App正在向垂直應(yīng)用遷移蔗崎,垂直應(yīng)用中同類用戶群體之間的溝通,產(chǎn)生聚合就顯得尤為重要了扰藕,因此目前國內(nèi)市場的XMPP應(yīng)用開發(fā)的人才需求非常大
4.XMPP的起源
XMPP是基于XML的協(xié)議缓苛,用于即時消息(IM)以及在線現(xiàn)場探測。最初邓深,XMPP作為一個框架開發(fā)未桥,目標(biāo)是支持企業(yè)環(huán)境內(nèi)的即時消息傳遞和聯(lián)機狀態(tài)應(yīng)用程序。當(dāng)時的即時消息傳遞網(wǎng)絡(luò)是私有的芥备,不適合企業(yè)使用冬耿。XMPP前身是Jabber(1998年),是一個開源組織定義的網(wǎng)絡(luò)即時通信協(xié)議
XMPP是一個分散型通信網(wǎng)絡(luò)萌壳,這意味著亦镶,只要網(wǎng)絡(luò)基礎(chǔ)設(shè)施允許,任何XMPP用戶都可以向其他任何XMPP用戶傳遞消息袱瓮。多個XMPP服務(wù)器也可以通過一個專門的“服務(wù)器-服務(wù)器”協(xié)議相互通信缤骨,提供了創(chuàng)建分散型社交網(wǎng)絡(luò)和協(xié)作框架的可能性
盡管XMPP的出現(xiàn)是為了滿足“個人-個人”即時消息傳遞的要求,但它完全不必局限于此任務(wù)
二尺借、XMPP相關(guān)
1.XMPP介紹
XMPP是一種基于XML的協(xié)議绊起,它繼承了在XML環(huán)境中靈活的發(fā)展性。這表明XMPP是可擴展的√破可以通過發(fā)送擴展的信息來處理用戶的需求,以及在 XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序轩猩。而且实蔽,XMPP包含了針對服務(wù)器端的軟件協(xié)議荡碾,使之能與另一個進行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個配置好的系統(tǒng)添加功能
XMPP的核心XML流傳輸協(xié)議的定義使得XMPP能夠在一個比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺上局装。借助于XML易于解析和閱讀的特性坛吁,使得XMPP的協(xié)議能夠非常漂亮
XMPP的即時通訊擴展應(yīng)用部分是根據(jù)IETF在這之前對即時通訊的一個抽象定義的,與其他業(yè)已得到廣泛使用的即時通訊協(xié)議铐尚,諸如AIM拨脉,QQ等有功能完整,完善等先進性
XMPP的擴展協(xié)議Jingle使得其支持語音和視頻宣增,目前iOS尚不支持
XMPP的官方文檔是RFC 3920
XMPP協(xié)議曾經(jīng)是Google力推的即時通信協(xié)議玫膀,其代表作品是GTalk。
注意:相對xml,json更高效一些爹脾。
2.Google Talk說明
Google Talk是Google的IM工具帖旨,除了具有IM功能外,另外還加上了Voip功能灵妨,“界面清新大方”解阅,可直接鏈接Gmail,接受查看郵件泌霍。由于Google Talk是基于Jabber開源標(biāo)準(zhǔn)货抄,這種標(biāo)準(zhǔn)允許用戶和其它的即時訊息系統(tǒng)相連,比如蘋果電腦的iChat朱转,GAIM蟹地,Trillian Pro以及Psi。Google Talk只能夠在Windows平臺上運行肋拔。Google Talk的用戶無法使用這種軟件與AIM锈津,MSN Messenger或者雅虎Messenger的用戶進行互通呀酸。
2013年5月凉蜂,在Google I/O大會上,Google推出統(tǒng)一跨平臺聊天應(yīng)用Hangouts(環(huán)聊)取代Google Talk性誉。Google Hangouts不支持XMPP協(xié)議窿吩。Google Hangouts用戶與非Google服務(wù)如XMPP協(xié)議的強有力支持者jabber.org之間的交流無法進行。
目前错览,Google Wave是基于XMPP協(xié)議的纫雁,并且Google還開發(fā)Jingle擴展進行基于XMPP協(xié)議的視頻聊天。盡管Google尚未宣布Talk的關(guān)閉日期倾哺,不過從Google關(guān)閉Reader和iCal支持來看轧邪,Talk關(guān)閉之日不會太遠
3.XMPP定義
XMPP:The Extensible Messaging and Presence Protocol(可擴展通訊和表示協(xié)議)
XMPP可用于服務(wù)類實時通訊刽脖、表示和需求響應(yīng)服務(wù)中的XML數(shù)據(jù)元流式傳輸。XMPP以Jabber協(xié)議為基礎(chǔ)忌愚,而Jabber是即時通訊中常用的開放式協(xié)議
XMPP是基于XML的協(xié)議曲管,用于即時消息(IM)以及在線現(xiàn)場探測。促進服務(wù)器之間的準(zhǔn)即時操作硕糊。這個協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時消息院水,即使其操作系統(tǒng)和瀏覽器不同
4.基本結(jié)構(gòu)
XMPP是一個典型的C/S架構(gòu),而不是像大多數(shù)即時通訊軟件一樣简十,使用P2P客戶端到客戶端的架構(gòu)檬某,也就是說在大多數(shù)情況下,當(dāng)兩個客戶端進行通訊時螟蝙, 他們的消息都是通過服務(wù)器傳遞的恢恼。采用這種架構(gòu),主要是為了簡化客戶端胰默,將大多數(shù)工作放在服務(wù)器端進行
XMPP中定義了三個角色厅瞎,客戶端,服務(wù)器初坠,網(wǎng)關(guān)和簸。通信能夠在這三者的任意兩個之間雙向發(fā)生
服務(wù)器同時承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能碟刺。 網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時通信系統(tǒng)的互聯(lián)互通锁保,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN半沽,ICQ等
基本的網(wǎng)絡(luò)形式是單客戶端通過TCP/IP連接到單服務(wù)器爽柒,然后在之上傳輸XML流