向所有连接的客户端/资源发送 xmpp 消息
Posted
技术标签:
【中文标题】向所有连接的客户端/资源发送 xmpp 消息【英文标题】:Send an xmpp message to all connected clients/resources 【发布时间】:2012-12-05 23:44:48 【问题描述】:如何使用 Python 库向所有连接的客户端/资源发送一条 XMPP 消息,例如:
xmpppy、jabber.py、jabberbot。任何其他命令行解决方案都很好。
到目前为止,我只能向一个客户端发送回显或一条消息。
目的是向所有连接的资源/客户端发送消息,而不是分组。 这可能由命令触发,但不是“真正”必要的。
谢谢。
【问题讨论】:
您要将其发送给所有连接的客户端,还是特定客户端的所有会话(即共享相同基本 JID 的所有客户端)? 我想将消息发送给所有在场的客户。所有连接的客户端都将存在。 【参考方案1】:我不能给你一个具体的python例子,但我解释一下逻辑是如何工作的。
当您向裸 Jid 发送消息时,它取决于服务器软件或配置如何路由。有些服务器将消息发送到“最可用资源”,有些服务器将消息发送到所有资源。例如。 Google Talk 将其发送给所有资源。
如果您控制服务器软件并且它允许您将消息路由到裸 Jid 到所有连接的资源,那么这将是最简单的方法。
当您的代码必须在任何服务器上运行时,您应该收集联系人的所有可用资源。您可以通过存在获得它们,大多数库对此都有回调。然后你可以循环发送消息给完整的Jids(带有资源)。
【讨论】:
【参考方案2】:我认为如果您为所有连接的资源设置相同的优先级,它会起作用,但我实际上并没有尝试。
但是在 ejabberd 中有一个名为 Mssage Carbon 的模块可以为您执行此操作,此功能或属性也可以在“route.all-resource”的名称下公开使用。
提示:如果使用消息碳,XMPP 客户端库也应该支持它以使其正常工作。
【讨论】:
以上是关于向所有连接的客户端/资源发送 xmpp 消息的主要内容,如果未能解决你的问题,请参考以下文章