【问题标题】:How to persist users(MultiUserChat) and chat history in Openfire (Ver 4.0.3) using SMACK API (4.2.0 Beta1)如何使用 SMACK API (4.2.0 Beta1) 在 Openfire (Ver 4.0.3) 中保留用户(MultiUserChat) 和聊天记录
【发布时间】:2017-01-12 11:46:16
【问题描述】:

我已经成功创建了一个多用户聊天组,但是用户下线了,用户从组中删除了,我希望在用户下次登录时保存消息历史记录。我从以下方法中找到了一些方法前文推导如下

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

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

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

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

注意:我正在寻找一个 whatsapp 群聊实现来向用户踢/邀请/providing_permissions 以及通知消息的历史记录/当他离线时。

我一直在寻找这个,非常感谢任何帮助。 提前致谢。

【问题讨论】:

  • ..你找到解决方案了吗???
  • 我在为此尝试了很多之后离开了,如果你不是在寻找开源并准备花一些钱。我觉得 firebase 是一个非常简单和最好的选择。你也可以找到替代品..
  • 感谢@Hard Coder

标签: android xmpp openfire smack


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    MUC 在 openfire 服务器中的功能不完整。并使用它来获取聊天记录:Retrieve history chat Openfire XMPP framework

    【讨论】:

      【解决方案3】:

      @hard-coder:看起来你是从客户端查看东西,而@guus 提出了服务器端的解决方案。并且根据您的要求:whatsapp 群聊实施服务器端解决方案将起作用,因为它无法在客户端完成。

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

      也可以看看MUC Light implemented by MongooseIM

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

      【讨论】:

        【解决方案4】:

        我认为有几个选择:

        您可以尝试阻止客户端离开/断开连接或无缝重新加入,这一切都非常困难,而且可能无法做到完全正确。

        另一种选择:Openfire MUC 实现可以配置为在参与者加入房间时发送整个历史记录(或可配置数量的最后条目)。这是检索在您加入之前发送的所有消息的粗略方式。

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

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

        【讨论】:

        • 感谢 Guss 的回复,我如何使用 REALM 并存储所有消息和用户列表并实现相同的目的,而不是创建一个非常耗时的插件,因为我看到 MIX(中介信息交换)开发正在进行中。如果我的想法正确,请告诉我
        猜你喜欢
        • 2023-03-12
        • 2011-10-01
        • 1970-01-01
        • 2013-11-08
        • 1970-01-01
        • 2016-07-07
        • 2016-12-06
        • 2018-04-27
        • 1970-01-01
        相关资源
        最近更新 更多