SleekXMPP Muc 房间列表和发现
Posted
技术标签:
【中文标题】SleekXMPP Muc 房间列表和发现【英文标题】:SleekXMPP Muc Room List and Discovering 【发布时间】:2016-09-10 13:48:28 【问题描述】:我是 XMPP 的新手 :) 我一直在使用 Ejabberd 和 slimXMPP。 我的问题是如何使用 slimXMPP 列出在线房间?
谢谢
【问题讨论】:
【参考方案1】:我也为此苦苦挣扎了一段时间。列出房间不是 MUC (xep_0045) 的一部分,而是服务发现 (xep_0030) 的一部分。
一些文档是here,但它仍然需要一些实验才能找到“disco_items”数组键。请注意,“iterator”参数只有在您还加载 XEP 时才有效-0059。
它的工作原理如下:
确保您已加载 0030:
xmpp.register_plugin('xep_0030')
使用它:(在我的例子中,这是扩展 slimxmpp.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'])
【讨论】:
【参考方案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))
【讨论】:
以上是关于SleekXMPP Muc 房间列表和发现的主要内容,如果未能解决你的问题,请参考以下文章
ejabberd - 带有 ejabberdctl 的 mucsub
如何使用 python xmpppy 获取 XMPP 服务器中所有 MUC 的列表?