XMPP學習——1、介紹

XMPPExtensible Messaging and Presence Protocol,前稱Jabber[1])是一種以XML爲基礎的開放式實時通信協議,是經由互聯網工程工作小組(IETF)通過的互聯網標準。XMPP因爲被Google Talk應用而被廣大網民所接觸。

 

運作方式

XMPP網絡是基於服務器的(即客戶端之間彼此不直接交談),但是也是分散式的。不像AOL實時通或MSN Messenger等服務,XMPP沒有中央官方服務器。Jabber.org的公衆服務器上有大量的用戶,所以有些人誤解了,以爲它是官方服務器,不過事實上任何人都可以在自己的網域上運行XMPP服務器。

Jabber識別符(JID)是用戶登錄時所使用的賬號,看起來通常像一個電子郵件地址,如[email protected];前半部分爲用戶名,後半部分爲XMPP服務器域名,兩個字段以@符號區隔。

假設朱麗葉([email protected])想和羅密歐([email protected])通話,他們兩人的賬號分別在Capulet.com及Montague.net的服務器上。當朱麗葉輸入信息並按下傳送鈕之後,一連串的事件就發生了:

  1. 朱麗葉的XMPP客戶端將她的信息傳送到Capulet.com XMPP服務器。
  2. Capulet.com XMPP服務器打開與Montague.net XMPP服務器的連接。
  3. Montague.net XMPP服務器將信息寄送給羅密歐。如果他目前不在在線,那麼存儲信息以待稍後寄送。

Juliet\leftrightarrowCapulet.com\leftrightarrowMontague.net\leftrightarrowRomeo

 

羅密歐與朱麗葉兩人的XMPP服務是由兩家不同的業者所提供的,而他們彼此傳訊時,不須擁有對方服務器的賬號,也不須成爲對方業者的會員。

 

使用XMPP協議的客戶端與服務器端對話的例子

客戶端(kuusipuu)連接到一個XMPP服務器(amessage.de:5222/TCP),發送一條消息(主題和內容均爲“test 1449”)到另一個客戶端(tero),然後註銷。

kuusipuu:

<?xml version="1.0"?>
<stream:stream xmlns:stream="http://etherx.jabber.org/streams"
xmlns="jabber:client" to="amessage.de">

amessage.de:

<stream:stream xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
from='amessage.de' id='1461777714'>

kuusipuu:

<iq type="set" id="auth_2" to="amessage.de" >
<query xmlns="jabber:iq:auth">
  <username>kuusipuu</username>
  <password>mypassword</password>
  <resource>Work</resource>
 </query>
</iq>

amessage.de:

<iq from="amessage.de" id='auth_2' type='result'/>

kuusipuu:

<message to="[email protected]" >
<subject>test 1449</subject>
<body>test 1449</body>
</message>
<presence type="unavailable" >
<status>Logged out</status>
</presence>
</stream:stream>

amessage.de:

</stream:stream>

 

參考:http://zh.wikipedia.org/wiki/XMPP


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章