【问题标题】:SleekXMPP Muc Room List and DiscoveringSleekXMPP Muc 房间列表和发现
【发布时间】:2016-09-10 13:48:28
【问题描述】:

我是 XMPP 的新手 :) 我一直在使用 Ejabberd 和 slimXMPP。 我的问题是如何使用 slimXMPP 列出在线房间?

谢谢

【问题讨论】:

    标签: python xmpp chatroom multiuserchat


    【解决方案1】:

    我也为此苦苦挣扎了一段时间。列出房间不是 MUC (xep_0045) 的一部分,而是服务发现 (xep_0030) 的一部分。

    一些文档是here,但它仍然需要一些实验才能找到“disco_items”数组键。请注意,“iterator”参数只有在您还加载 XEP 时才有效-0059

    它的工作原理如下:

    1. 确保您已加载 0030:

      xmpp.register_plugin('xep_0030')
      
    2. 使用它:(在我的例子中,这是扩展 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))
      

      【讨论】:

        猜你喜欢
        • 2012-09-13
        • 1970-01-01
        • 2015-02-08
        • 1970-01-01
        • 2021-01-04
        • 2018-10-05
        • 2012-10-18
        • 2017-03-27
        • 2011-08-29
        相关资源
        最近更新 更多