【问题标题】:Querying for presence in XMPP在 XMPP 中查询存在
【发布时间】:2011-08-09 18:29:49
【问题描述】:

默认情况下,XMPP 状态会发布给订阅该人的所有用户。是否可以发送诸如 iq 调用之类的内容来获取我的名册中不存在的 id 的存在标签?

【问题讨论】:

    标签: xmpp user-presence


    【解决方案1】:

    如果您只想知道 XMPP 实体是否已连接,您可以使用 XMPP Ping (XEP-0199)。下面给出了两个 xmpp 用户“user1”和“user2”的示例。他们不在彼此的烘焙者名单上。我在下面的示例中使用 ejabberd 和 PSI。

    • “user2” ping “user1”(user1 在线)

    智商:

    <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" />
    

    • “user2” ping “user1”(user1 离线。ping 的响应导致 type=error)

    智商:

    <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>
    

    【讨论】:

    • 值得注意的是,这仅在您拥有 user2 的资源时才有效,在某些情况下这是未知的。
    【解决方案2】:

    我不这么认为。查看rfc,第 5.1.3 节。具体来说,它说:

    在收到来自用户的在线探测后,联系人的服务器
    应该回复如下:

    如果用户不在订阅的联系人名单中 “From”、“From + Pending Out”或“Both”的状态(定义为 在订阅状态(第 9 节)下),联系人的服务器 必须 返回“错误”类型的存在节以响应 存在探测。

    您可能会在响应中收到错误或禁止。

    【讨论】:

      【解决方案3】:

      rfc 表示不允许您从不在您的花名册列表中的 id 接收出席信息。

      但我相信可以通过修改服务器来查询存在(如果有允许的xmpp服务器)

      【讨论】:

        【解决方案4】:

        没有。

        • 在线状态已订阅,未查询。当你得到 回答您的问题,信息将是陈旧的。
        • 存在是个人信息。您必须得到联系人的明确授权才能查看它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-28
          • 2012-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-06
          相关资源
          最近更新 更多