【问题标题】:MUC Invite message is not sent to all user resources on OpenfireMUC 邀请消息未发送到 Openfire 上的所有用户资源
【发布时间】:2016-06-07 01:00:50
【问题描述】:

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

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

我已向用户(即 userA)发送 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),但它似乎只发送到最后登录的资源。例如,如果我以 userA 身份登录我的手机,然后以 userA 身份登录我的笔记本电脑,则邀请只会发送给笔记本电脑用户。

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

有人知道这是否可能吗?

谢谢, 史蒂夫

【问题讨论】:

    标签: xmpp openfire strophe multiuserchat


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      注意:根据XEP-0045向userB邀请userA的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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多