【发布时间】:2011-08-09 18:29:49
【问题描述】:
默认情况下,XMPP 状态会发布给订阅该人的所有用户。是否可以发送诸如 iq 调用之类的内容来获取我的名册中不存在的 id 的存在标签?
【问题讨论】:
标签: xmpp user-presence
默认情况下,XMPP 状态会发布给订阅该人的所有用户。是否可以发送诸如 iq 调用之类的内容来获取我的名册中不存在的 id 的存在标签?
【问题讨论】:
标签: xmpp user-presence
如果您只想知道 XMPP 实体是否已连接,您可以使用 XMPP Ping (XEP-0199)。下面给出了两个 xmpp 用户“user1”和“user2”的示例。他们不在彼此的烘焙者名单上。我在下面的示例中使用 ejabberd 和 PSI。
智商:
<iq from='user2@pdevdv3os18f.corp.intuit.net'
to='user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X' type='get' id='e2e1'>
<ping xmlns='urn:xmpp:ping'/>
</iq>
回应:
<iq from="user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" type="result" xml:lang="en" to="user2@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" id="e2e1" />
智商:
<iq from='user2@pdevdv3os18f.corp.intuit.net'
to='user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X' type='get' id='e2e1'>
<ping xmlns='urn:xmpp:ping'/>
</iq>
回应:
<iq from="user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" type="error" xml:lang="en" to="user2@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" id="e2e1" >
<ping xmlns="urn:xmpp:ping"/>
<error type="cancel" code="503" >
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
【讨论】:
我不这么认为。查看rfc,第 5.1.3 节。具体来说,它说:
在收到来自用户的在线探测后,联系人的服务器
应该回复如下:如果用户不在订阅的联系人名单中 “From”、“From + Pending Out”或“Both”的状态(定义为 在订阅状态(第 9 节)下),联系人的服务器 必须 返回“错误”类型的存在节以响应 存在探测。
您可能会在响应中收到错误或禁止。
【讨论】:
rfc 表示不允许您从不在您的花名册列表中的 id 接收出席信息。
但我相信可以通过修改服务器来查询存在(如果有允许的xmpp服务器)
【讨论】:
没有。
【讨论】: