对xep-0030 服务发现的一点理解,属性查询

xep 0030对服务发现的理解,可以理解为文件系统查找过程,上篇讲目录 式查询,怎么区分查询结果是目录,还是文件呢,我们希望的是查询到文件,才是我们需要的“服务实体”

于是,我们希望得到上篇文章中查询结果的属性,在xmpp中,叫'http://jabber.org/protocol/disco#info'

要查询"某文件"的属性

我们发送如下:(注意,文件夹也是文件,所以,都可以被查询“属性”)

<iq type='get'
    from='romeo@montague.net/orchard'
    to='plays.shakespeare.lit'
    id='info1'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

收到

<iq type='result'
    from='plays.shakespeare.lit'
    to='romeo@montague.net/orchard'
    id='info1'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <identity
        category='conference'
        type='text'
        name='Play-Specific Chatrooms'/>
    <identity
        category='directory'
        type='chatroom'
        name='Play-Specific Chatrooms'/>
    <feature var='http://jabber.org/protocol/disco#info'/> 说明可以查询‘属性’
    <feature var='http://jabber.org/protocol/disco#items'/> 说明可以浏览下一级目录
    <feature var='http://jabber.org/protocol/muc'/>
    <feature var='jabber:iq:register'/>
    <feature var='jabber:iq:search'/>
    <feature var='jabber:iq:time'/>
    <feature var='jabber:iq:version'/>
  </query>
</iq>
category为分类 ,type为类型,这两个听起来有点。。。一个文件,可以有多个category(分类),有多个type,
其中
category为主要的分类 ,category='directory'说明此"文件"为目录
category='conference'说明此'文件'为会议
还有其它程类,可以网上搜索一下

我们怎么才能确定 这查询到的是一个目录 属性呢,用
category='directory'来确定
但是,是目录 ,就能查询他的子级吗?不行的,得看他的属性,看他是否能被查询子级目录,
category只是分类说明,真正的属性是feature 所指明的东西,


如果<feature var='http://jabber.org/protocol/disco#items'/>,说明可以查找下一级目录

xmpp规定,每个实体 必须 至少支持 'http://jabber.org/protocol/disco#info' 特性,

 注意,你查询到的category='conference'(会议),却不一定能真正开始会议,为什么,因为得看属性,属性说明他所支持的协议

只有属性为<feature var='http://jabber.org/protocol/muc'/>才能开始会议的哟

posted @ 2013-11-19 16:44  choday  阅读(292)  评论(0编辑  收藏  举报