XMPP通訊過程簡介

版權所有,轉載請註明出處:http://guangboo.org/2013/02/21/xmpp-communication

分佈式框架

XMPP協議描述了全局唯一的通訊地址,就像email地址一樣,並且協議還描述了XMPP服務器之間的通訊,使得XMPP通訊不侷限於域內,而且支持跨域的通訊,也就是說jid爲[email protected]的用戶也可以與jid爲[email protected]的用戶進行通訊,具體通訊過程如下圖:


XMPP客戶端只能連接當前域的XMPP服務器,並完成驗證,綁定資源等操作。客戶端之間的通訊,如在同一域內則不必多說,當需要跨域通訊時,那麼服務器端負責服務器直接的通訊。因此服務器端不僅協調客戶端之間的消息交換,而且要負責服務器間的消息交換。

通訊過程

這裏以使用TCP連接爲例介紹XMPP通訊的過程:

  1. 建立TCP連接;
  2. 發送初始化XML流<stream>
  3. 流協商過程,客戶端詢問服務器端的特性支持情況,如強制性的特性出現不支持,將可能直接關閉XML流,並端口連接;
  4. 用戶驗證;
  5. 初始化出席信息,通知服務器自己的狀態;
  6. 數據交換,如發送、接收即時消息,查詢用戶信息等;
  7. 發送結束XML流</stream>;
  8. 關閉TCP連接。

XML表示

初始化流 響應流 說明
<stream>   發送初始化流
  <stream> 服務器端響應

<presence>

<show/>

</presence>

  發送出席狀態

<message to='[email protected]'>

<body/>

</message>

  發送消息給[email protected]

<iq to='example.net' type='get'>

<query/>

</iq>

  向服務器做查詢操作
 

<iq from='example.net' type='result'>

<query/>

</iq>

返回查詢結果
[...]   發送其他消息
  [...] 服務器反饋
</stream>   關閉流
  </stream> 關閉流

以上大部分xml片段都是非常簡短的,實際的XML將會有許多屬性和子節點。

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