sleekxmpp使用相同的用户名向所有资源发送消息

时间:2014-10-27 12:00:49

标签: python-2.7 xmpp

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

我尝试使用send_message

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

但只有登录的第一个资源才会收到它。

我使用的服务器是Openfire。

1 个答案:

答案 0 :(得分:0)

不是发件人,也不是发件人的服务器,而是收件人的服务器控制哪个收件人的资源收到type='chat'的邮件。通常,这是基于收件人资源设置的在线状态的优先级。

但是有一些解决方法:

  • 使用type='headline'消息(https://tools.ietf.org/html/rfc6121#section-5.2.2):

      

    如果'到' address是裸JID,接收服务器应该将消息传递给具有非负存在优先级的所有接收者可用资源,并且必须将消息传递给至少一个这些资源;

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

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