如何在 XMPP 的聊天室中获取用户加入时间

Posted

技术标签:

【中文标题】如何在 XMPP 的聊天室中获取用户加入时间【英文标题】:How to get the user joined time in Chat room in XMPP 【发布时间】:2016-11-29 09:07:27 【问题描述】:

我正在开发一个应用程序,我想知道用户在聊天室中加入(首次加入)的时间。这样我就只能显示当时的聊天记录。是否可以。任何建议表示赞赏。

【问题讨论】:

你叫什么加入?加入是在 Groupchat 规范(XEP-0045:多用户聊天)中定义的,意味着向房间发送出席信息。因此,只需向房间发送出席信息即可加入。 例如。我正在邀请用户加入房间。当用户通过接受我的邀请加入房间时,他不应该看到房间以前的历史记录。这可以实现吗? 是的,通常默认显示房间内最后交换的 10 或 20 条消息,除非用户要求特别禁用最后一条消息检索。如果你想要更多,你需要使用消息存档管理协议来查询 MUC 房间的存档。 谢谢米凯尔。我会检查邮件存档。 【参考方案1】: 配置服务器以禁用聊天历史记录。

mod_muc: history_size: 0

首次加入房间时询问消息历史记录,从您的 TimeJoined 开始。 http://xmpp.org/extensions/xep-0045.html#enter-history

【讨论】:

聊天室历史记录应该按用户而不是按房间显示。 Xmpp 协议只提供通用功能,如何使用由您决定。例如。服务器不会为每个用户保存消息,而是为房间保存消息。

以上是关于如何在 XMPP 的聊天室中获取用户加入时间的主要内容,如果未能解决你的问题,请参考以下文章

XMPP Farmework 如何在iOS中获取XMPP聊天室列表?

XMPP群聊java - 在邀请监听器内加入房间的用户的逻辑不起作用

按需获取房间聊天记录

无法使用 ruby​​ xmpp4r 获取以前的群聊历史记录

如何让 Openfire 用户出现在聊天室中

XMPP 多用户聊天获取用户列表