XMPP多用户聊天获取用户列表

igo*_*gor 3 xmpp

获取所有用户的列表以及XMPP多用户聊天的状态

<iq from='hag66@shakespeare.lit/pda'
    id='kl2fax27'
    to='coven@chat.shakespeare.lit'
    type='get'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>
Run Code Online (Sandbox Code Playgroud)

获取列表但没有状态.我需要知道所有状态的用户吗?

Joe*_*and 7

请阅读XEP-0045,其中描述了多用户聊天(MUC)协议.你需要加入房间:

<presence
    from='hag66@shakespeare.lit/pda'
    to='coven@chat.shakespeare.lit/thirdwitch'>
  <x xmlns='http://jabber.org/protocol/muc'/>
</presence>
Run Code Online (Sandbox Code Playgroud)

然后,您将从房间的每个占用者获得他们当前状态的存在节:

<presence
    from='coven@chat.shakespeare.lit/firstwitch'
    to='hag66@shakespeare.lit/pda'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <item affiliation='owner' role='moderator'/>
  </x>
</presence>

<presence
    from='coven@chat.shakespeare.lit/secondwitch'
    to='hag66@shakespeare.lit/pda'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <item affiliation='admin' role='moderator'/>
  </x>
</presence>
Run Code Online (Sandbox Code Playgroud)

在您提出要求之前,没有办法告诉您何时"完成"接收这些通知,因为用户可能随时出入.您现在订阅了占用者的存在变化,并且必须跟踪接收方的当前状态.