【问题标题】:How to send notifications to an offline member deleted from a chat group?如何向从聊天组中删除的离线成员发送通知?
【发布时间】:2016-08-01 10:11:09
【问题描述】:

我是 XMPP 的新手,正在开发一个类似于 watsapp 的群聊应用程序。场景是:

“用户A创建了一个群聊,添加了用户B,C和D。所有成员都在线并且他们正在聊天。现在D将应用程序带到后台或杀死应用程序。现在A从组中删除D。如何当 D 回到应用程序时,用户 D 将收到 A 已将他从组中删除的通知?

我在 PostgreSQL 中使用 ejabberd (15.11) 并遵循 XMPP 架构。我不确定答案是否在那里,所以想在这里获得帮助。

【问题讨论】:

  • 您问题的描述似乎与标题不符。标题是关于存在,问题是关于群聊中的权限更改通知。你能澄清你的问题吗?
  • 我很抱歉造成混乱。标题具有误导性。为这个问题发布的描述是我坚持的场景。
  • 也许您应该更新您的帖子以更改您的标题,然后:) 您能否澄清一下您的意思是 A 将 D 从组中删除?您发送的 XMPP 数据包是基于成员的房间吗?您的意思是 A 从成员列表中删除 D 吗?
  • 是的。这是会员制房间。 A 是管理员,D 是成员,他从成员列表中删除了 D。

标签: xmpp ejabberd xmppframework


【解决方案1】:

XMPP MUC 规范在9.5: Modifying the Member List 部分中说:

如果已移除的成员当前在仅限成员的房间中,则该服务 应该通过将已移除成员的角色更改为 "none" 并向被移除的成员发送适当的出席信息 前面描述过。该服务必须随后拒绝进入 用户。

这意味着参与者只有在事件发生时出现在房间时才会收到他自己的状态更改修改。如果他当时不在线,他只能知道他的凭据已被删除,因为他不能再加入房间了。换句话说,在规范的当前状态下,当移除发生时用户不在房间时,无法获得移除通知。您可以推断他已被删除,因为他在下次登录时无法再次加入房间。

XEP-0045 多用户聊天中没有定义任何其他内容来存储离线参与者和以后交付的会员事件。

【讨论】:

  • 我想我之前并不清楚......让我再解释一下。 D 有一段时间没有使用该应用程序,该应用程序处于后台,他与 XMPP 断开连接。现在 A 将他从成员列表中删除。我将如何通知 D 他已从群组中删除?
  • 你很清楚,我回复了这个。在规范的当前状态下,当用户不在房间内时,无法获得移除通知。您可以推断出这一点,因为他无法再次加入房间。如果需要有具体的通知,需要自定义协议和服务器。
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多