slimxmpp 向所有具有相同用户名的资源发送消息

Posted

技术标签:

【中文标题】slimxmpp 向所有具有相同用户名的资源发送消息【英文标题】:sleekxmpp send message to all the resource with same user name 【发布时间】:2014-10-27 12:00:48 【问题描述】:

我正在尝试从用户 B 向使用用户名用户 A 登录的所有资源发送消息。但只有第一个登录的资源才会收到消息。这类似于向用户内的所有资源广播存在。有没有办法使用 slim-xmpp 做到这一点?

我尝试使用 send_message

        self.send_message(mto='userA@testserver',
                      mbody='sending - chat message ',
                      mtype='chat')

但它只被第一个登录的资源接收。

我使用的服务器是 Openfire。

【问题讨论】:

【参考方案1】:

不是发送者,也不是发送者的服务器,而是接收者的服务器控制接收者的哪些资源接收带有type='chat'的消息。通常,这是基于接收者资源设置的状态的优先级。

不过有一些解决方法:

使用type='headline' 消息(https://www.rfc-editor.org/rfc/rfc6121#section-5.2.2):

如果“收件人”地址是裸 JID,则接收服务器应将消息传递到具有非负存在优先级的接收者的所有可用资源,并且必须将消息传递到这些资源中的至少一个;

要求收件人使用支持XEP-0280 的客户端。这允许客户选择接收每条聊天消息。

如果您订阅了收件人的存在,您可以向每个资源发送单独的消息,但这在很多方面都是一个非常糟糕的主意(其中之一:如果某些资源脱机,它可能会导致脱机存储重复同时)。

【讨论】:

感谢您的帮助。我尝试了选项 1 - "headline" 以及 xep-0280 。但它不起作用。只有一个资源正在获取消息。

以上是关于slimxmpp 向所有具有相同用户名的资源发送消息的主要内容,如果未能解决你的问题,请参考以下文章

向一组用户发送私人消息(Discord.js)

python slimxmpp & gchat 发送“隐形”存在

QuickBlox:发送消息不会在具有相同登录名的其他设备上更新

通讯组基本管理任务三

向所有连接的客户端/资源发送 xmpp 消息

WordPress Gravity Forms 按用户角色向 WP 用户动态发送通知