XMPP協(xié)議2

1IQ 節(jié)

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

下面的示例給出了一些常見的節(jié)以及它們可能的響應(yīng)。注意,與和節(jié)(它們定義了子元素)不同,節(jié)通常只包含與它們功能相關(guān)的擴展元素。此外,每一對節(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ā)送了一個格式錯誤的花名冊請求。服務(wù)器使用一個錯誤提示節(jié)作為響應(yīng)。后面我們將詳細討論錯誤提示節(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ā)送正確的請求之后,服務(wù)器將Jane 的簡短花名冊響應(yīng)給她??梢钥吹紼lizabeth 和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 添加到自己的花名冊中,服務(wù)器用一個空白IQ-result 節(jié)來指出添加成功。如果應(yīng)答節(jié)只是成功確認,那么IQ-result 節(jié)通常是空白的。

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容