【问题标题】:How to create MUC and send messages to existing MUC using Python and XMPP如何使用 Python 和 XMPP 创建 MUC 并向现有 MUC 发送消息
【发布时间】:2011-04-01 11:58:30
【问题描述】:

我想知道这里是否有人可以在以下场景中提供一些代码示例。我对使用 xmpppy 来执行此操作特别感兴趣,因为我已经在我的应用程序中使用了该库,但其他库也可以。不幸的是,xmpppy 项目网站没有关于此的任何示例。浏览专家/高级 API 文档,我不知道该怎么做,或者 xmpppy 不支持多用户聊天 (MUC)?

  • 通过邀请特定用户(例如 2 或 3 个)创建 MUC

  • 向现有的 MUC 发送消息(假设您知道它是 MUC JID 句柄或昵称)

  • 在 XMPP 服务器上查找现有的 MUC,获取 JID 或昵称等。如果通过获取名册来完成,我们只想查找 MUC,而忽略用户。

我在这里找到了答案,但我可能必须学习新的库 API 调用并弄清楚如何执行上述场景,因为此示例并未涵盖所有场景:

pyxmpp: quick tutorial for creating a muc client?

我真的很想开发一个负载生成器,将消息泵送到 MUC 并创建具有许多参与者的大型 MUC。我已经准备好将消息发送给用户收件人的部分。

【问题讨论】:

    标签: python xmpp xmpppy


    【解决方案1】:

    Xmpppy 确实支持使用 MUC 服务,但支持非常基础,需要一些额外的代码来管理多个房间。

    要“加入”一个 MUC 房间,您需要向 JID 广播您的存在。

    conn.send(xmpp.Presence(to="%s/%s" % (room, nickname)))
    

    然后要发送消息,您可以使用“群聊”消息类型将它们发送到房间 JID。

    msg = xmpp.protocol.Message(body=text)
    msg.setTo(room)
    msg.setType('groupchat')
    conn.send(msg)
    

    至于您关于寻找 MUC 房间的问题,这将通过服务发现来完成。

    【讨论】:

    • 是的,你是对的,使用发现我们可以找到房间列表,但是如何?
    【解决方案2】:

    虽然我不知道那里具体的 MUC 接口,但 xmpppy 支持自定义消息,因此它支持整个 XMPP。

    要加入聊天,您需要发送出席信息,conn.send(xmpp.Presence(to='{0}/{1}'.format(room, nick)))

    发送消息聊天:

        stranza = "<message to='{0}' type='groupchat'><body>{1}</body></message>".format(room, text)
        conn.send(stranza)
    

    至于创建新聊天或在花名册中查找,我手头没有现成的代码,但以相同的方式编写很容易,只需在 XEP 中查找所需的 stranzas:

    http://xmpp.org/extensions/xep-0045.html#createroom

    http://xmpp.org/extensions/xep-0045.html#disco-rooms

    http://xmpp.org/extensions/xep-0045.html#invite

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多