我想知道这里是否有人可以在以下场景中提供一些代码示例。我对使用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。我已经有了将消息传递给用户收件人的部分。
答案 0 :(得分:6)
Xmpppy确实支持使用MUC服务,但支持非常基础,并且需要一些额外的代码来管理多个房间。
要“加入”MUC会议室,您需要向JID广播您的展示。
conn.send(xmpp.Presence(to="%s/%s" % (room, nickname)))
然后,要发送消息,请使用“groupchat”消息类型将消息发送到房间JID。
msg = xmpp.protocol.Message(body=text)
msg.setTo(room)
msg.setType('groupchat')
conn.send(msg)
至于您关于寻找MUC房间的问题,这将通过服务发现来完成。
答案 1 :(得分: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