2011-07-09 7 views
3

を取得し、私はそうXMPPマルチユーザーチャットユーザーリストに

<iq from='[email protected]/pda' 
    id='kl2fax27' 
    to='[email protected]' 
    type='get'> 
    <query xmlns='http://jabber.org/protocol/disco#items'/> 
</iq> 

は、リストを取得するが、ステータスのないないすべてのユーザーのリストとXMPPマルチユーザーチャット のステータスを取得。 ステータスのすべてのユーザーが知る必要がありますか?

答えて

7

マルチユーザチャット(MUC)プロトコルについて説明しているXEP-0045をお読みください。あなたはルームに参加する必要があります。

<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

完全性のために、部屋に入室した後に、いわゆる[Presence Broadcast](http://xmpp.org/extensions/xep-0045.html#enter-pres)を伝える方法がありますfinished:最終的な存在は常に自己存在であり、 '' '' 'によって示されます。 –

+0

@ max.weller私はかなり間違っている実装があると確信しています。 –

1

XMPP RFCを読んでいると、ステータスがプレゼンスメッセージによって伝達されていることがわかります。probeステータスリクエストを送信することで、別のエンティティにステータスを報告するよう依頼することができます(ブロードキャストで通知するのではなく)。 §5.5 of the RFCにいくつかの例が示されています)が返されます。もちろん、彼らが正しく言うことを解釈するのはあなた次第です...