作为会员永久离开XMPP会议室

时间:2016-11-21 12:29:06

标签: xmpp ejabberd xmppframework

我们正在实施一个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的离开聊天功能。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如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/