【问题标题】:Loading conversation messages in chat app with Firestore使用 Firestore 在聊天应用中加载对话消息
【发布时间】:2019-04-29 00:39:39
【问题描述】:

在使用 React Native 和 Redux 构建聊天应用程序并使用 Firestore 作为后端时,为特定对话加载消息的最佳方式是什么?

一开始我会显示 8 个聊天条目,当我点击其中一个时,我会看到带有 20 条最新消息的聊天屏幕。对每个聊天(不是所有聊天,只是显示的聊天,因为使用了分页)实现实时监听器是一个好主意吗?每个人的messages 集合中的 20 条最新消息并事先准备好?

或者在打开特定聊天的消息屏幕时加载消息是否更好。

我知道,作为用户体验,第一个选项更好,因为在显示聊天的前 20 条消息时没有延迟,但它不会消耗大量可能永远不需要的数据,因为在 8 条消息中聊天时,用户可能只与 2 或 3 个交互。

除了这两个还有什么更好的办法吗?

提前致谢!

【问题讨论】:

    标签: firebase react-native google-cloud-firestore chat


    【解决方案1】:

    是否是一个好主意,由您决定要创建什么样的聊天应用程序。在您谈论的延迟与您获得的数据量之间始终是一种交易,而这些数据量可能会被用户看到,也可能不会被用户看到。此外,如果你说你有 8 个聊天室,有 20 条消息,这意味着默认情况下,当用户打开你的聊天应用程序时,Firestore 会向你收取 8*20=160 读取操作,即使用户是否进入聊天室,我认为这不是一个好主意。如果您有几个用户,那不会有问题,但如果您的应用程序增长,您可能会再考虑一下。在 Firestore 中,一切都是根据他们的pricing plan 来读取和写入的次数。

    【讨论】:

    • 嗨罗敏!一切都好吗,我可以帮助您了解其他信息吗?
    • 如果您认为我的回答对您有所帮助,请考虑接受。我会很感激的。谢谢!
    【解决方案2】:

    在我看来,您应该考虑通过为应用提供离线功能来升级您的用户体验,而不是一次性加载不必要的数据。您应该为相关聊天获取数据,并使您的应用程序记住最新的 10-20 条消息,并且您可以随时同步您的数据。您可能需要考虑RealmSQLite

    此外,为了更好地显示聊天屏幕的 UX,您应该考虑让您的 chat-list 节点容纳每个聊天中的最后一条消息和时间戳,这样您就不必为每个聊天项目嵌套查询只有一个屏幕渲染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 2019-03-23
      相关资源
      最近更新 更多