Есть две (возможно три) сущности XMPP, которые имеют эту информацию:
- компонент MUC XMPP, который обеспечивает комнату MUC
- пользовательский клиент XMPP (или лучше используемая пользователем библиотека XMPP)
- возможно сервер (ы) XMPP (но давайте игнорируем это)
На момент написания этой статьи не было стандартизированного (с точки зрения XMPP XEP) способа запроса этой информации. Как отметил Джо Хильдебранд, это приведет к утечке информации, что в большинстве случаев не то, что нам нужно.
Но вы можете расширить компонент MUC для предоставления этой информации (помните, что XMPP легко расширяемый) или клиентскую библиотеку XMPP. Обычный подход будет через запрос iq get. Например:
<iq type='get' from='juliet@capulet.lit/balcony' to='capulet.lit' id='q1'>
<query xmlns='http://jabber.org/protocol/muc#joinedrooms'/>
</iq>
Объекты, которые поддерживают этот запрос, затем сообщат о присоединенных комнатах запрошенного объекта. Также они могут объявить функцию http://jabber.org/protocol/muc#joinedrooms
в своей информации об обнаружении услуг.
Обратите внимание, что это расширение вымышленного протокола, приведенное в качестве примера. Я никогда не видел его в реальном использовании
Если компонент MUC предоставляет эту функцию, клиент не может управлять ею, если эта информация предоставлена. Но если клиент предоставляет эту функцию, то, конечно, он может контролировать, кто может получить эту информацию. Вы можете решить, какой подход лучше в вашем случае.