XMPP学习4-发现世界

XMPP服务发现(disco)解决了如何查找网络中的实体及其支持的协议功能问题。通过disco#items发现网络实体,disco#info了解实体功能。这一过程包括向服务器发送IQ-GET请求,逐步遍历实体的子节点,获取详细信息。
摘要由CSDN通过智能技术生成

服务发现

XMPP实体种类多样,支持功能复杂,项目版本更新迅速,以至于衍生了两个问题:
1 如何获知网络包含的实体
2 实体支持何种XMPP协议功能
使用服务发现(disco)将解决上述问题
服务发现方法
1 disco#items 发现网络中实体
2 disco#info 发现一个实体支持的功能
disco#items示例
通过disco#items请求发现ejabberd.org服务器实体

<iq from="user@ejabberd.org"
         id="xl391n47"
         to="ejabberd.org"
         type="get">
     <query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>

服务器回复一个相关的实体名单,其中客户端由 id 属性的值跟踪

<iq from="ejabberd.org"
         id="xl391n47"
         to="user@ejabberd.org"
         type="result">
     <query xmlns="http://jabber.org/protocol/disco#items">
         <item jid="conference.ejabberd.org"/>
         <item jid="proxys.ejabberd.org"/>
     </query>
</iq>

disco#info示例
获取网络实体后,通过disco#info查看实体支持功能

<iq from="user@ejabber.org"
         id="gq02kb71"
         to="conference.ejabberd.org"
         type="get">
     <query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>

conference.ejabberd.org服务返回一些关于自身的信息

<iq from="conference.ejabberd.org"
         id="gq02kb71"
         to="user@ejabberd.org"
         type="result">
     <query xmlns="http://jabber.org/protocol/disco#info">
         <identity category="conference" type="text" name="公共房间"/>
         <feature var="http://jabber.org/protocol/muc"/>
         <feature var="jabber:iq:register"/>
         <feature var="vcard-temp"/>
     </query>
</iq>

由XML应答信息,可知,conference.ejabberd.org提供主机服务,文本会议服务,支持多用户聊天协议,内置用户名注册和电子名片组件
注:<identity/>元素是实体“代理信息”,不透露详细功能,但是可以宣扬身份

服务发现方式

使用服务器和服务进行服务发现
disco#items 和 disco#info 的方法通常是一起使用,以实现实体的“走遍树”。
1 disco#items向A发送IQ-GET发现实体B
2 disco#info发现实体B功能协议
3 disco#items向B发送IQ-GET发现提示C
4 disco#info发现实体C功能协议
5 disco#items向C发送IQ-GET发现实体D
6 …
使用客户进行服务发现
客户至少知道一个实体,也就是自己的服务器,同时若客户存在联系人名册,可利用出席信息获取联系人全JID,针对JID使用disco#info即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值