基於XMPP協議的IM登錄實現(一)

 

一、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登錄

XMPP登錄大致的流程爲:輸入用戶名密碼,與服務器(Jabber服務器)建立Socket連接,打開輸入輸出流,請求Jabber連接(輸出XML請求),根據返回XML判斷是否連接成功,連接成功進行用戶名密碼的驗證,驗證成功,顯示主界面。
整個過程的詳細流程圖如下,由於wizFlow不支持中文,我就用英文講究代替一下。
翻譯一下:
Start——開始
input server,port,resource,username,password——輸入服務器,端口,資源,用戶名,密碼
Connecting Socket——建立Socket連接
Connected?——是否連接
OpenStream——打開輸入輸出流
OutputStream:Write Request Connection XML——輸出請求Jabber連接的XML流
Connecting Jabber——正在連接Jabber
InputStream:Get Response Connection XML——輸入流獲取服務器響應的XML
id,from null?——判斷服務器響應的XML是否包含id,from屬性
OutputStream:Write Authentication XML——輸出驗證XML流,該XML包含用戶名,密碼信息
Acthenticating Account——正在驗證賬戶
InputStream:Get Response Authentication XML——輸入流獲取服務器響應的XML
type equals “result”?——判斷服務器響應的XML中type屬性是否等於result
Main Form——顯示主界面
 

 

發佈了52 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章