MUC 邀请消息不会发送到 Openfire 上的所有用户资源



我在让 Openfire 向与用户 jid 关联的所有用户资源发送邀请消息时遇到问题。我正在使用Openfire(3.9.3)和Strophe(1.1.3)。

用户 jid 在 openfire 上登录了 2 个资源(例如 userA@chat.mychatserver.com/e1ef0b84、userA@chat.mychatserver.com/fa51aad7)。

我已经向用户(即用户A)发送了MUC邀请消息以加入房间。

<?xml version="1.0"?>
<message xmlns:stream="http://etherx.jabber.org/streams"
   xmlns="jabber:client" from="chatRoom@se.dev.openfire" to="userA@dev.openfire"
   version="1.0">
  <x xmlns="http://jabber.org/protocol/muc#user">
    <invite from="userB@dev.openfire"/>
  </x>
  <x xmlns="jabber:x:conference" jid="chatRoom@dev.openfire"/>
</message>

我希望邀请被发送到两个资源(例如 userA@chat.mychatserver.com/e1ef0b84、userA@chat.mychatserver.com/fa51aad7),但它似乎只发送到上次登录的资源。例如,如果我以用户 A 身份登录手机,然后以用户 A 身份登录笔记本电脑,则邀请将仅发送给笔记本电脑用户。

Openfire 似乎正确地将正常的 xmpp 消息路由到两个用户资源,我原本希望 muc 邀请以相同的方式处理。

有谁知道这是否可能?

谢谢史蒂夫

组邀请也被视为普通消息,应路由到所有连接的资源。
但是,为了将消息路由到所有连接的资源,Openfire 具有以下逻辑:
选择具有最高状态优先级的会话,如果没有会话符合条件,则消息将存储在脱机存储中,如果找到具有相同优先级的 1 个以上会话,则 Openfire 将变得更加智能;)即检查"路由.所有资源"属性的值。
如果 "route.all-resources" 为 true,则消息将路由到所有这些选定的会话,如果 value 为 false,则它根据显示值(聊天、可用、离开、xa)对会话进行排序,并在上次活动时间再次对结果进行排序,最后选择第一个结果并将消息路由到该会话。

注意:根据 XEP-0045,从用户 B 邀请用户 A 的 XML 采用以下形式:

<message
    from='userB@dev.openfire'
    to='chatRoom@se.dev.openfire'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <invite to='userA@dev.openfire'>
      <reason>
        Hey UserA, this is the place for all good witches!
      </reason>
    </invite>
  </x>
</message>

然后 XMPP 服务器(在本例中为 Openfire)必须提供发送 XML:

<message
    from='chatRoom@se.dev.openfire'
    to='userA@dev.openfire'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <invite from='userB@dev.openfire'>
      <reason>
        Hey UserA, this is the place for all good witches!
      </reason>
    </invite>
    <password>xyz</password>
  </x>
</message>

PS:另一种方式是直接邀请(不像XEP-0045那样由房间调解),见 http://xmpp.org/extensions/xep-0249.html

最新更新