Android實現推送解決方案之一--XMPP協議
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
XMPP協議簡介 XMPP(Extensible Messageing and Presence Protocol:可擴展消息與存在協議)是目前主流的四種IM(IM:instant messaging,即時消息)協議之一,其他三種分別為:即時信息和空間協議(IMPP)、空間和即時信息協議(PRIM)、針對即時通訊和空間平衡擴充的進程開始協議SIP(SIMPLE)。 在這四種協議中,XMPP是最靈活的。XMPP是一種基于XML的協議,它繼承了在XML環境中靈活的發展性。因此,基于XMPP的應用具有超強的可擴展性。經過擴展以后的XMPP可以通過發送擴展的信息來處理用戶的需求,以及在XMPP的頂端建立如內容發布系統和基于地址的服務等應用程 序。而且,XMPP包含了針對服務器端的軟件協議,使之能與另一個進行通話,這使得開發者更容易建立客戶應用程序或給一個配好系統添加功能。 1. 什么是XMPP ? XMPP的前身是Jabber,一個開源形式組織產生的網絡即時通信協議。XMPP目前被IETF國際標準組織完成了標準化工作。標準化的核心結果分為兩部分; 核心的XML流傳輸協議 基于XML流傳輸的即時通訊擴展應用 XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規范的平臺上。借助于XML易于解析和閱讀的特性,使得XMPP的協議能夠非常漂亮。 XMPP的即時通訊擴展應用部分是根據IETF在這之前對即時通訊的一個抽象定義的,與其他業已得到廣泛使用的即時通訊協議,諸如AIM,QQ等有功能完整,完善等先進性。 2. XMPP的基本網絡結構是怎樣的? XMPP中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。網關承擔著與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客戶端通過TCP/IP連接到單服務器,然后在之上傳輸XML。 3. XMPP通過TCP傳什么了? 傳輸的是與即時通訊相關的指令。在以前這些命令要么用2進制的形式發送(比如QQ),要么用純文本指令加空格加參數加換行苻的方式發送(比如MSN)。而 XMPP傳輸的即時通訊指令的邏輯與以往相仿,只是協議的形式變成了XML格式的純文本。這不但使得解析容易了,人也容易閱讀了,方便了開發和查錯。而 XMPP的核心部分就是一個在網絡上分片斷發送XML的流協議。這個流協議是XMPP的即時通訊指令的傳遞基礎,也是一個非常重要的可以被進一步利用的網絡基礎協議。所以可以說,XMPP用TCP傳的是XML流。 XMPP協議工作原理:
4. XMPP協議地址格式:
5. XMPP消息格式:
6. 核心的XML流傳輸協議 基于XML FreeEIM流傳輸的即時通訊擴展應用 XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規范的平臺上。借助于XML易于解析和閱讀的特性,使得XMPP的協議能夠非常漂亮。 XMPP的即時通訊擴展應用部分是根據IETF在這之前對即時通訊的一個抽象定義的,與其他業已得到廣泛使用的即時通訊協議,諸如AIM,QQ等有功能完整,完善等先進性。 XMPP的擴展協議Jingle使得其支持語音和視頻。 XMPP的官方文檔時RFC 3920. 7. XMPP應用示例 舉個例子看看所謂的XML流是什么樣子的? 客戶端:<?xml version='1.0'?> <stream:stream to='example_com' xmlns='jabber:client' xmlns:stream='http_etherx_jabber_org/streams' version='1.0'> 服務器:<?xml version='1.0'?> <stream:stream from='example_com' id='someid' xmlns='jabber:client' xmlns:stream='http_etherx_jabber_org/streams' version='1.0'> ...其他通信... 客戶端:<message from='juliet_example_com' to='romeo_example_net' xml:lang='en'> 客戶端: <body>Art thou not Romeo, and a Montague?</body> 客戶端:</message> 服務器:<message from='romeo_example_net' to='juliet_example_com' xml:lang='en'> 服務器:<body>Neither, fair saint, if either thee dislike.</body> 服務器:</message> 客戶端:</stream:stream> 服務器:</stream:stream> 以文檔的觀點來看,客戶端或服務器發送的所有XML文本連綴在一起,從<stream>到</stream>構成了一個完整的 XML文檔。其中的stream標簽就是所謂的XML Stream。在<stream>與</stream>中間的那些<message>...< /message>這樣的XML元素就是所謂的XML Stanza(XML節)。XMPP核心協議通信的基本模式就是先建立一個stream,然后協商一堆安全之類的東西,中間通信過程就是客戶端發送XML Stanza,一個接一個的。服務器根據客戶端發送的信息以及程序的邏輯,發送XML Stanza給客戶端。但是這個過程并不是一問一答的,任何時候都有可能從一方發信給另外一方。通信的最后階段是</stream>關閉流,關閉TCP/IP連接。 8. XMPP系統特點: 1)客戶機/服務器通信模式;(2)分布式網絡;(3)簡單的客戶端;(4)XML的數據格式。 9.通俗解釋: 其實XMPP 是一種很類似于http協議的一種數據傳輸協議,它的過程就如同“解包裝--〉包裝”的過程,用戶只需要明白它接受的類型,并理解它返回的類型,就可以很好的利用xmpp來進行數據通訊。 該文章在 2013/2/25 23:55:27 編輯過 |
關鍵字查詢
相關文章
正在查詢... |