查询XMPP中的存在

san*_*zgk 4 xmpp user-presence

默认情况下,XMPP存在发布给订阅该人的所有人.是否有可能发送类似iq调用的内容来获取我名单中不存在的id的状态标签?

CPJ*_*shi 6

如果您只想知道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>
Run Code Online (Sandbox Code Playgroud)

响应:

<iq from="user1@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" type="result" xml:lang="en" to="user2@pdevdv3os18f.corp.intuit.net/BANL07R9AME9X" id="e2e1" />
Run Code Online (Sandbox Code Playgroud)
  • "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>
Run Code Online (Sandbox Code Playgroud)

响应:

<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>
Run Code Online (Sandbox Code Playgroud)