7

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

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

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

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

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

pyxmpp:创建 muc 客户端的快速教程?

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

4

2 回答 2

5

虽然我不知道那里的特定 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

于 2010-08-20T07:09:49.083 回答
5

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 房间的问题,这将通过服务发现来完成。

于 2010-08-23T10:27:58.220 回答