我是XMPP的新手:)我一直在使用Ejabberd和sleekXMPP。 我的问题是如何在线房间与sleekXMPP一起列出?
谢谢
答案 0 :(得分:2)
我也挣扎了一段时间。列表房间不是MUC的一部分( xep_0045 ),而是服务发现的一部分( xep_0030 )。
有些文档是here,但仍然需要一些实验才能找到'disco_items'数组键。请注意,如果你还加载 iterator ”参数才有效> XEP-0059 强>
它的工作原理如下:
确保您已装入0030:
xmpp.register_plugin('xep_0030')
使用它:(在我的情况下,这是扩展sleekxmpp.ClientXMPP的类的start()方法的一部分)
result = self['xep_0030'].get_items(jid='conference.your.xmpp.server.com', iterator=True)
for room in result['disco_items']:
print "Found room %s, jid is %s" % (room, room['jid'])
答案 1 :(得分:2)
Akom的方法不错,但是我个人对迭代器参数有疑问。
有关服务发现实施的完整示例,请参见:
https://github.com/fritzy/SleekXMPP/blob/develop/examples/disco_browser.py
使用这些功能,您只需执行以下操作即可获取XMPP服务器的身份,信息和功能:
items = self['xep_0030'].get_items(jid='conference-server.com', node='', block=True)
然后:
for identity in info['disco_info']['identities']:
print(' - %s' % str(identity))
for feature in info['disco_info']['features']:
print(' - %s' % feature)
for item in items['disco_items']['items']:
print(' - %s' % str(item))