如何使用SMACK API(4.2.0 Beta1)在Openfire(Ver 4.0.3)中保留用户(MultiUserChat)和聊天记录

时间:2016-09-05 06:28:38

标签: android xmpp openfire smack

我已经成功创建了一个多用户组,但是用户离线时用户已从组中删除,我希望在下次登录时为用户保存消息的历史记录。我发现了一些方法来自之前的推论如下

  1. 有几个旧的答案,但没有一个基于新的SMACK API 4.1.5 +

  2. 使用"流管理",但我不知道该怎么做以及怎么做,它如何帮助解决我的问题。

  3. 使用PUBSUB获取消息并传递给用户并显示用户的伪列表

  4. 我想知道最有效的方法或任何有助于实现我的结果的库。我是XMPP的新手,拥有2年以上的java经验

    注意:我正在寻找一个 whatsapp群聊实施,以便向用户提供/邀请/ provide_permissions以及通知/离线时的消息历史记录。

    我正在寻找这个很长一段时间,非常感谢任何帮助。 提前谢谢。

4 个答案:

答案 0 :(得分:0)

我认为有几种选择:

您可以尝试阻止客户离开/断开连接,或者无缝重新加入,这非常困难,并且可能无法完全正确地完成。

替代方案:可以将Openfire MUC实施配置为在参与者加入会议室时发送整个历史记录(或可配置数量的最后条目)。这是检索您加入之前发送的所有邮件的粗略方式。

另一种选择是以另一种方式利用MUC房间的历史:我认为监视器插件将房间的历史保存到数据库(或者至少应该这样做)。也许你可以利用它。如果所有其他方法都失败了,您可以创建自己的插件,它可以执行类似的操作:截取到MUC服务器端的所有消息,将它们保存到数据库,并允许客户端以某种方式检索此历史记录。

有了任何解决方案,您应该考虑隐私。当您存储数据并使其可检索时,您应该认真考虑谁将会看到什么。

答案 1 :(得分:0)

@ hard-coder:好像你正在从客户端查看东西,而@guus提出了服务器端解决方案。根据您的要求: whatsapp群聊实施服务器端解决方案将无法在客户端完成。

WhatsApp在XMPP之上自定义MUC实现,因此您必须通过自定义在Openfire Server中进行开发。或者等待在任何服务器中实现MIX:Openfire,Ejabberd,MongooseIM。

另请查看MUC Light implemented by MongooseIM

如果您需要解决方案,您可以随时获得具有您所需功能的Ejabberd或MongooseIM商业版。但它们是商业解决方案。

答案 2 :(得分:0)

MUC在openfire服务器中无法正常运行。并使用它来获取聊天记录:Retrieve history chat Openfire XMPP framework

答案 3 :(得分:0)

在数据库中保存消息和组名,连接到xmpp时,连接到数据库中的所有组