首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jabber协议问题

jabber协议问题
EN

Stack Overflow用户
提问于 2009-06-03 01:18:37
回答 2查看 351关注 0票数 0

我的jabber机器人的一个联系人,

其“订阅”属性值为“”to“”,

根据jabber协议,这意味着:

*机器人已订阅了对方的在线状态,但对方尚未订阅我的机器人的在线状态。*

但是当我登录到对方的账户时,

我能看到机器人在线了,

为什么会这样呢?

jabber协议现在是混乱的吗?

EN

回答 2

Stack Overflow用户

发布于 2009-06-04 16:28:49

如果你说"My bot make a subscription TO shore“或"Shore has a subscription FROM my bot","from”和"to“会更有意义。

因此,如果机器人的花名册中有:

代码语言:javascript
复制
<item jid='shore@example.com' subscription='to'/>

然后机器人将看到shore的存在,但shore将不会看到bot的存在,假设shore的花名册具有:

代码语言:javascript
复制
<item jid='bot@example.com' subscription='from'/>

由于网络问题等原因,这些状态可能会不同步。在这些情况下,解决问题的最简单方法是删除项目(这应该最终有效地删除另一侧的项目),然后重新添加(有关详细信息,请参阅RFC 3921bis, section 2.5.1 ):

代码语言:javascript
复制
<iq from='bot@example.com/background'
   id='delete_1'
   type='set'>
 <query xmlns='jabber:iq:roster'>
   <item jid='shore@example.com' subscription='remove'/>
 </query>
</iq>
<presence type='subscribe' 
          from='bot@example.com/background' 
          to='shore@example.com'/>

要记住的是,即使订阅是在显示的方向上,机器人也可能会将定向存在发送到岸上,在这种情况下,即使岸上没有订阅机器人,他也会看到两者的存在。检查机器人的协议日志,您可能会看到类似以下内容:

代码语言:javascript
复制
<presence to='shore@example.com'/>
票数 3
EN

Stack Overflow用户

发布于 2009-06-03 04:05:27

我已经有一段时间没有使用XMPP了,但是快速地重读一下这个规范,我会认为您把"to“的意思搞混了。如果用户在机器人的花名册上被列为"to“,那么这意味着用户正在关注机器人的存在,而不是相反。" from“表示机器人正在关注--或将从--用户帐户接收到在线状态节。

你知道用户的花名册是什么样子的吗?如果同步了,则用户的花名册中应该将机器人列为"from“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/942684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档