2011-07-09 61 views

回答

7

请阅读XEP-0045,它描述了多用户聊天(MUC)协议。你需要加入聊天室:

<presence 
    from='[email protected]/pda' 
    to='[email protected]/thirdwitch'> 
    <x xmlns='http://jabber.org/protocol/muc'/> 
</presence> 

然后,您会从房间它们的当前状态的每个乘员获得存在节:

<presence 
    from='[email protected]/firstwitch' 
    to='[email protected]/pda'> 
    <x xmlns='http://jabber.org/protocol/muc#user'> 
    <item affiliation='owner' role='moderator'/> 
    </x> 
</presence> 

<presence 
    from='[email protected]/secondwitch' 
    to='[email protected]/pda'> 
    <x xmlns='http://jabber.org/protocol/muc#user'> 
    <item affiliation='admin' role='moderator'/> 
    </x> 
</presence> 

你提问之前,没有,没有告诉您何时“完成”接收这些通知,因为用户可能随时出入。您现在订阅了占用者的存在变化,并且必须跟踪接收方当前的情况。

+0

为了完整起见,加入房间后确实有办法告诉所谓的[存在广播](http://xmpp.org/extensions/xep-0045.html#enter-pres)完成:最后的存在始终是自我存在,它由一个''''''表示。 –

+0

@ max.weller我很确定有些实现会导致错误。 –

1

通过XMPP RFC的阅读,我发现状态由状态消息传递,并且您要求另一个实体通过向状态请求发送probe状态(而不是等待它在广播中告诉您)状态你会得到一个指示响应(§5.5 of the RFC给出了一些例子)。这取决于你自己的意思,当然......