<presence>
presence節(jié)點用來控制和表示實體的在線狀態(tài),可以展示從離線到在線甚至于離開,不能打擾等復雜狀態(tài),另外,還能被用來建立和結束在線狀態(tài)的訂閱。
下面是一些節(jié)點例子:
<presence/>
設定用戶狀態(tài)為在線
<presence type="unavailable"/>
設定用戶狀態(tài)為離線
<presence>
<show>away</show>
<status>at the ball</status>
</presence>
用于顯示用戶狀態(tài)的詳細信息。上面的例子表明用戶因為at the ball在離開狀態(tài)。
<show>標簽在presence節(jié)點中最多出現(xiàn)一次,可以有以下取值:away,chat,dnd,xa.
away:離線
char:交談中
dnd:希望不被打擾
xa:離開一段時間
<status>標簽用于顯示額外信息
<presence>
<status>touring the countryside</status>
<priority>10</priority>
</presence>
在這個節(jié)中,出現(xiàn)了一個<priority>標簽,表示現(xiàn)在連接的優(yōu)先度。 每個連接可以設置從-128到127的優(yōu)先讀,默認是設置為0.用戶可以在這個標簽里修改相應的優(yōu)先度。如果有相應的設置的話,用戶送往純JID的將會送到優(yōu)先度最高的那個連接,如果設置值為負數的話,則表示送往純JID的消息將永遠不會送達該連接。
擴展<presence>節(jié)點
1.在線狀態(tài)預定(presence subscription)
首先我們來看一個例子:
<presence
from=" to=" type="subscribe"/>
<presence
from=" to=" type="subscribed"/>
通過上述交互,william_duan就能看到test_account的在線狀態(tài),并能接收到test_account的在線狀態(tài)通知了。
<message> 正如名字一樣,message節(jié)點用于用戶之間傳遞消息。這消息可以是單純的聊天信息,也可以某種格式化的信息。 message節(jié)點信息是傳遞之后就被忘記的。當消息被送出之后,發(fā)送者是不管這個消息是 否已經送出或者什么時候被接收到。通過擴展協(xié)議,可以改變這樣一種狀況。
下面我們看一些例子:
<message
from=" to=" type="chat">
<body>Come on</body>
<thread>23sdfewtr234weasdf</thread>
</message>
私人聊天信息
<message
from=" to=" type="groupchat">
<body>welcome</body>
</message>
多人聊天信息
上面的兩個例子都包含了一個<type>標簽,這個標簽表明了消息的類型,可以取下面的一些值. chat:私人聊天信息,在IM中是最常見的。
error:錯誤信息
normal:不怎么使用的類型
groupchat:多人聊天信息
headline:通常用在自動服務中,不需要回應。
<body>標簽里面是具體的消息內容。
<iq> iq節(jié)點主要是用于Info/Query模式的消息請求,他和Http協(xié)議比較相似??梢园l(fā)出get以及set請求,就如同http中的GET以及POST. iq節(jié)點需要有回應,有get,set兩種請求以及result,error兩種回應。
下面我們看看一些例子:
<iq
from=" type="get"
id="roster1">
<query xmlns="jabber:iq:roster"/>
</iq>
william_duan請求自己的聯(lián)系人列表。
<iq
to=" type="error"
id="roster1">
<query xmlns="jabber:iq:roster"/>
<error type="cancel">
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
請求發(fā)生錯誤。
<iq
to=" type="error"
id="roster1">
<query xmlns="jabber:iq:roster"/>
<item jid=" <item jid="</iq>
請求成功,返回william_duan的聯(lián)系人列表。每一個<item>標簽代表了一個聯(lián)系人信息。