【发布时间】:2021-11-12 04:12:40
【问题描述】:
我有一个聊天系统(带有 Firebase 和 Flutter),我在其中收听传入消息的集合流。现在,我正在同时收听 10 个流,这意味着我正在收听 10 个聊天室的任何传入消息。
问题:是否有可用于 Firestore 的 webhook,以便我们可以触发/通知任何集合中存在特定更改并开始侦听该集合的流?
这个想法是只收听那些正在接收新数据的收藏/聊天室。我对此进行了研究,但还没有找到可能的解决方案。
【问题讨论】:
-
"我监听传入消息的集合流" => 您使用的是哪种方法? [
snapshots()](snapshots() 方法返回 Stream:) 方法返回 Stream? -
是的,我正在使用流生成器来监听收集中的任何变化并接收带有快照的新数据。
-
这是收听集合中新文档(以及修改和删除)的标准方式。换句话说,“是否有可用于 Firestore 的 webhook,以便我们可以触发/通知任何集合中存在某种变化”的答案是使用
snapshots()!如果你想要不同的东西(如果我理解正确,管理更少的流),你需要建立自己的机制。例如,拥有一个云函数,它在您收听的特定集合中创建一个标志文档。创建标志后,您开始侦听触发 Cloud Function 的集合。 -
你说得对。机制应该就像,假设有 15 个用户连接到的人/聊天室。首先,我们可以收听 10 个聊天室的任何传入消息。其次,这是真正的问题,如果任何最后 5 个聊天室/集合获得任何新数据而我们没有收听它们,那么我们应该如何为它们接收新数据。我们甚至不知道该集合中有新数据。现在,这就是 webhook 的用武之地。如果以某种方式可以将 webhook 附加到我们没有收听的那些集合上,那么 webhook 可以通知这一点。
标签: firebase flutter google-cloud-firestore