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 的列表?

在 SleekXMPP 中接收带有消息的“角色”和/或“从属关系”

strophe js MUC房间

如何知道谁在 MUC 房间收到了消息

XMPP MUC问题