iOS開發拓展篇-XMPP簡單介紹
一、即時通訊簡單介紹
1、簡單說明
即時通訊技術(IM)支持用戶在線實時交談。如果要發送一條信息,用戶需要打開一個小窗口,以便讓用戶及其朋友在其中輸入信息並讓交談雙方都看到交談的內容
有許多的IM系統,如AOL IM、Yahoo IM、 MSN以及QQ,它們最大的區別在於各自通訊協議的實現,所以即時通訊技術的核心在於它的傳輸協議
協議用來說明信息在網絡上如何傳輸,如果有了統一的傳輸協議,那么應當可以實現各個IM之間的直接通訊,為了創建即時通訊的統一標准,目前已經出現過的IM協議包括:IETF的對話初始協議(SIP)和即時通訊對話初始協議和表示擴展協議(SIMPLE)、應用交換協議(APEX)、顯示和即時通訊協議(PRIM)及基於XML且開放的可擴展通訊和表示協議(XMPP)協議(常稱為 Jabber 協議)
業界經過多次努力,試圖統一各大主要IM供應商的標准(AOL、Yahoo 及 Microsoft),但無一成功,且每一種IM仍然繼續使用自己所擁有的協議
2.遵守XMPP即時通訊協議
設計一款全世界都使用的即時通訊協議,無論使用什么即時通訊軟件,都可以互聯互通。
3.即時通訊在垂直社交中的意義
和第一代大而全的水平網站(又稱綜合性網站)不同,垂直網站注意力集中在某些特定的領域或某種特定的需求,提供有關這個領域或需求的全部深度信息和相關服務,作為互聯網的新亮點,垂直網站正引起越來越多人的關注。在越來越多的網絡吸引老百姓的注意力時,網民卻逐漸走出時髦、好奇的初級階段,不斷在網上尋找着實際、實用和實惠。隨着移動互聯網應用的發展,現在越來越多的App正在向垂直應用遷移,垂直應用中同類用戶群體之間的溝通,產生聚合就顯得尤為重要了,因此目前國內市場的XMPP應用開發的人才需求非常大
4.XMPP的起源
XMPP是基於XML的協議,用於即時消息(IM)以及在線現場探測。最初,XMPP作為一個框架開發,目標是支持企業環境內的即時消息傳遞和聯機狀態應用程序。當時的即時消息傳遞網絡是私有的,不適合企業使用。XMPP前身是Jabber(1998年),是一個開源組織定義的網絡即時通信協議
XMPP是一個分散型通信網絡,這意味着,只要網絡基礎設施允許,任何XMPP用戶都可以向其他任何XMPP用戶傳遞消息。多個XMPP服務器也可以通過一個專門的“服務器-服務器”協議相互通信,提供了創建分散型社交網絡和協作框架的可能性
盡管XMPP的出現是為了滿足“個人-個人”即時消息傳遞的要求,但它完全不必局限於此任務
二、XMPP相關
1.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。
注意:相對xml,json更高效一些。
2.Google Talk說明
Google Talk是Google的IM工具,除了具有IM功能外,另外還加上了Voip功能,“界面清新大方”,可直接鏈接Gmail,接受查看郵件。由於Google Talk是基於Jabber開源標准,這種標准允許用戶和其它的即時訊息系統相連,比如蘋果電腦的iChat,GAIM,Trillian Pro以及Psi。Google Talk只能夠在Windows平台上運行。Google Talk的用戶無法使用這種軟件與AIM,MSN Messenger或者雅虎Messenger的用戶進行互通。
2013年5月,在Google I/O大會上,Google推出統一跨平台聊天應用Hangouts(環聊)取代Google Talk。Google Hangouts不支持XMPP協議。Google Hangouts用戶與非Google服務如XMPP協議的強有力支持者jabber.org之間的交流無法進行。
目前,Google Wave是基於XMPP協議的,並且Google還開發Jingle擴展進行基於XMPP協議的視頻聊天。盡管Google尚未宣布Talk的關閉日期,不過從Google關閉Reader和iCal支持來看,Talk關閉之日不會太遠
3.XMPP定義
XMPP:The Extensible Messaging and Presence Protocol(可擴展通訊和表示協議)
XMPP可用於服務類實時通訊、表示和需求響應服務中的XML數據元流式傳輸。XMPP以Jabber協議為基礎,而Jabber是即時通訊中常用的開放式協議
XMPP是基於XML的協議,用於即時消息(IM)以及在線現場探測。促進服務器之間的准即時操作。這個協議可能最終允許因特網用戶向因特網上的其他任何人發送即時消息,即使其操作系統和瀏覽器不同
4.基本結構
XMPP是一個典型的C/S架構,而不是像大多數即時通訊軟件一樣,使用P2P客戶端到客戶端的架構,也就是說在大多數情況下,當兩個客戶端進行通訊時, 他們的消息都是通過服務器傳遞的。采用這種架構,主要是為了簡化客戶端,將大多數工作放在服務器端進行
XMPP中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生
服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。 網關承擔着與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等
基本的網絡形式是單客戶端通過TCP/IP連接到單服務器,然后在之上傳輸XML流