XMPP協(xié)議2

1IQ 節(jié)

<iq>節(jié)表示的是Info/Query(信息與查詢),它為XMPP通信提供請(qǐng)求與響應(yīng)機(jī)制。它與HTTP協(xié)議的基本工作原理非常相似,允許獲取和設(shè)置查詢,與HTTP 的GET 和POST 動(dòng)作類似。每個(gè)節(jié)都必須有一個(gè)響應(yīng),而且前面曾經(jīng)提到過(guò),該節(jié)的必需的id 屬性將用來(lái)把響應(yīng)與導(dǎo)致該響應(yīng)的請(qǐng)求關(guān)聯(lián)起來(lái)。節(jié)有四種,通過(guò)該節(jié)的type 屬性區(qū)分。有兩種節(jié)請(qǐng)求(get 和set)和兩種響應(yīng)(result 和error)。在本書(shū)中,這些節(jié)通常被縮寫為IQ-get、IQ-set、IQ-result和IQ-error。每一個(gè)IQ-get 或IQ-set 節(jié)均必須接收響應(yīng)的IQ-result 或IQ-error 節(jié)。

下面的示例給出了一些常見(jiàn)的節(jié)以及它們可能的響應(yīng)。注意,與和節(jié)(它們定義了子元素)不同,節(jié)通常只包含與它們功能相關(guān)的擴(kuò)展元素。此外,每一對(duì)節(jié)必須匹配id 屬性。

<iq from = 'jane@longbourn.lit/garden'

type = 'get'

id = 'roster1'>

<query xmlns='jabber:iq:roster'/>

</iq>

<id to = 'jane@longbourn.lit/garden'

type = 'error'

id = 'roster1'>

<query xmlns='jabber:iq:roster'/>

<error type='cancel'>

<feature-not-implementer xmlns='urn:left:params:xml:ns:xmpp-stanzas'/>

</error>

</iq>

Jane 向她的服務(wù)器發(fā)送了一個(gè)格式錯(cuò)誤的花名冊(cè)請(qǐng)求。服務(wù)器使用一個(gè)錯(cuò)誤提示節(jié)作為響應(yīng)。后面我們將詳細(xì)討論錯(cuò)誤提示節(jié)。

<iq from = 'jane@longbourn.lit/garden'

type = 'get'

id='roster2'>

<query xmlns='jabber:iq:roster'/>

</iq>

<iq to='jane@longbourn.lit/garden'

type='result'

id='roster2'>

<query xmlns='jabber:iq:roster'>

<item jid='elizabeth@longbourn.lit' name = 'Elizabeth'/>

<item jid='bingley@netherfield.lit' name = 'Bingley'/>

</query>

</iq>


在重新發(fā)送正確的請(qǐng)求之后,服務(wù)器將Jane 的簡(jiǎn)短花名冊(cè)響應(yīng)給她。可以看到Elizabeth 和Bingley 均在Jane 的聯(lián)系人列表中。

第1 章了解 XMPP 協(xié)議

<id from = 'jane@longbourn.lit/garden'

type = 'set'

id = 'roster3'>

<query xmlns = 'jabber:iq:roster'>

<item jid='darcy@pemberley.lit' name = 'Mr.Dancy'/>

</query>

</iq>

<iq to = 'jane@longbourn.lit/garden'

type = 'result'

id = 'roster3'/>

Jane 試圖將Darcy 添加到自己的花名冊(cè)中,服務(wù)器用一個(gè)空白IQ-result 節(jié)來(lái)指出添加成功。如果應(yīng)答節(jié)只是成功確認(rèn),那么IQ-result 節(jié)通常是空白的。

在任何需要結(jié)果數(shù)據(jù)或者需要簡(jiǎn)單確認(rèn)的場(chǎng)合中,<iq>節(jié)都非常有用。大多數(shù)XMPP 擴(kuò)展協(xié)議混合使用<iq>和<message>節(jié)來(lái)實(shí)現(xiàn)它們的功能。<iq>節(jié)用于類似于配置和狀態(tài)變化這樣的信息,而<message>節(jié)則用于常規(guī)通信。在某些場(chǎng)合中,<iq>節(jié)也用于通信,這是因?yàn)楣?jié)確認(rèn)機(jī)

制可實(shí)現(xiàn)限速功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容