由於項目需要做一個基於XMPP協議的Android通訊軟體。故開始研究XMPP
XMPP協議採用的是客戶端-伺服器架構,所有從一個客戶端發到另一個客戶端的消息和數據都必須經過XMPP伺服器轉發,而且支持伺服器間DNS的路由,也就是說可以構建伺服器集群,使不同的伺服器下的客戶端也可以通信,XMPP的前身是一個開源組織制定的網路通信協議——Jabber,XMPP的核心是在網路上分片段發送XML流的協議,這個協議是XMPP的即時通訊指令的傳遞手段。
為了防止伺服器間發送的數據被篡改或偷聽,XMPP伺服器通信引入了TLS機制,使用TLS機制能實現數據的加密,從而保證了在數據傳輸過程種數據的安全。
一個XMPP實體的地址稱為Jabber Identifier或JID,作用類似於IP地址。一個合法的JID包括節點名,域名資源名,其格式為:jid=[node'@']domain['/'resource]
XMPP協議的命名空間:
jabber:iq:private -- 私有數據存儲,用於本地用戶私人設置信息,比如用戶備註等。
jabber:iq:conference -- 一般會議,用於多個用戶之間的信息共享
jabber:x:encrypted -- 加密的消息,用於發送加密消息
jabber:x:expire -- 消息終止
jabber:iq:time -- 客戶端時間
jabber:iq:auth -- 簡單用戶認證,一般用於伺服器之間或者伺服器和客戶端之間的認證
jabber:x:roster -- 內部花名冊
jabber:x:signed -- 標記的在線狀態
jabber:iq:search -- 用戶資料庫查詢,用於向伺服器發送查詢請求
jabber:iq:register -- 註冊請求,用於用戶註冊相關信息
jabber:x:iq:roster -- 花名冊管理
jabber:x:conference -- 會議邀請,用於向參加會議用戶發送開會通知
jabber:x:event -- 消息事件
vcard-temp -- 臨時的vCard,用於設置用戶的頭像以及昵稱等
在網上找了下,有開源的項目BEEM,開源的用於Android的xmpp框架asmack,asmack是smack的android版本。現在開始學習smack
。Xmpp就是神馬東西,就不廢話了。首先在網上下一個Openfire和Spack,不知道這兩個是什麼東西,就直接google吧。安裝openfire需要mysql的支持,當然,oracle,sqlserver肯定是可以的。還是先上圖吧:
Openfire + Spark + MyXMPPP
[火星人 ] Android平台下基於XMPP的IM研究已經有583次圍觀