【问题标题】:Leaving XMPP Room Permanently As a Member作为会员永久离开 XMPP 房间
【发布时间】:2016-11-21 12:29:06
【问题描述】:

我们正在实现一个 xmpp 客户端,并且我们使用 ejabberd 作为 xmpp 服务器。 我们已经在我们的应用程序中实现了 muc(多用户聊天)功能,一切正常,唯一的问题是成员永久离开群组。

我知道在 XEP 45 中说如果您想离开群组,只需将不可用的状态发送到房间,但这在我们的情况下不起作用,因为我们的管理员将群组的用户添加到 memberList 通过发送以下 xml:

<iq from='crone1@shakespeare.lit/desktop'
    id='member1'
    to='coven@chat.shakespeare.lit'
    type='set'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item affiliation='member'
          jid='hag66@shakespeare.lit'
          nick='thirdwitch'/>
  </query>
</iq>

当一个成员发送不可用状态时,这不会影响组成员列表(这是我们想要的) 因此,我们希望找到一种方法让成员将自己从群组成员列表中永久删除,这样他/她将无法再收到来自该群组的任何消息 这样的事情可能吗?我们可以像whatsapp的离开聊天功能一样将自己从群组成员的列表中删除吗?

【问题讨论】:

    标签: xmpp ejabberd xmppframework


    【解决方案1】:

    当用户离开房间时,他将不再收到消息 - XMPP MUC 是基于存在的。 “成员列表”仅用于管理目的,不控制消息接收。

    还有一些其他 XMPP 扩展规范在设计时考虑了“持久”成员列表,例如 MUC Light - 它可能更适合您的需求。

    【讨论】:

    • 我知道成员列表与消息接收无关,但这里的问题是,在我们的 xmpp 客户端应用程序中:组成员还检查成员列表以查看房间中还有谁。因此,如果离开房间的人没有将自己从组的成员列表中删除。其他成员将始终将他视为参与者。我想解决这个问题。当管理员删除成员(或禁止成员)时它工作正常,但当成员试图删除自己时它不起作用
    • 您的客户端应用程序正在做一些不寻常的事情,例如在“基于状态的”XMPP MUC 之上模拟“持久”成员列表,而管理成员列表仍然只允许版主使用。如果你想继续这样做,你需要明确允许普通成员编辑成员列表,这可能需要编辑你的 xmpp 服务器的代码。
    • 我引用 Vitalyster。您只有一个解决方案:将自定义扩展元素添加到您的“离开”操作并让 Ejabber 删除订阅服务器端。客户端成员不能删除它自己的成员资格。但是,使用角色列表模拟的持久成员列表,完全避免用户成员,成员对该 porpouse 有范围限制
    • @MrPk 你能解释一下你在说什么吗:add a custom Extension Element to your "leave" action and let Ejabber remove the subscription server side。为了让 ejabberd 了解离开和删除订阅,我应该添加哪个元素?
    • 你必须自己实现。 Xmpp 支持扩展元素,这意味着自定义标签来触发事件。因此,当您发送一个类似于 foo 的离开命令时,您可以附加一个嵌套标签,例如 。有了这个,服务器端,您可以通过数据库或超级管理员删除成员订阅。您必须自己实现全部功能,因为它已关闭 XMPP
    【解决方案2】:

    根据 XEP-0045 中的定义,如果 MUC 管理员添加了另一个用户作为成员,则该添加的用户不能将自己作为成员删除。 但是,作为 XEP-0045 中的默认设置,MUC 成员不接收消息。这让我觉得这不是你遇到的问题。

    我建议您使用在 ejabberd 中实现并在本规范中定义的 MUC/Sub,以获得更大的灵活性。它 100% 符合 MUC 规范,因此符合 MUC 的客户端和 MUC/Sub 增强客户端可以参与相同的工作流程。

    在您的情况下,我认为您需要为您的用户订阅他想要的事件(消息,可能存在或配置更改)。订阅可以由用户处理,以便用户也可以控制取消订阅。它应该完全符合您的要求。

    您需要 ejabberd 16.09 才能使用该规范。 MUC/Sub 在这里定义:https://docs.ejabberd.im/developer/xmpp-clients-bots/proposed-extensions/muc-sub/

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 2015-05-17
      • 2012-06-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      相关资源
      最近更新 更多