Google cloud firestore Firestore发布服务器能否检测到来自侦听器的订阅?

Google cloud firestore Firestore发布服务器能否检测到来自侦听器的订阅?,google-cloud-firestore,Google Cloud Firestore,Firestore客户端能否检测到对文档的订阅?我希望客户端仅在至少一个其他客户端正在侦听文档时发布(写入)文档更改。在我的例子中,这将大大减少整个数据库中Firestore写入的数量 情景: 客户端每3秒采样一个测量值,并将其发布到Firestore 另一个客户端(应用程序)正在侦听此Firestore文档并显示值更新 只有在用户想要查看数据时,应用才会偶尔打开。大多数情况下,它是未打开的,因此没有客户正在收听该文档 Firestore API中是否有任何方法可以检测是否正在侦听文档?否,

Firestore客户端能否检测到对文档的订阅?我希望客户端仅在至少一个其他客户端正在侦听文档时发布(写入)文档更改。在我的例子中,这将大大减少整个数据库中Firestore写入的数量

情景:

  • 客户端每3秒采样一个测量值,并将其发布到Firestore
  • 另一个客户端(应用程序)正在侦听此Firestore文档并显示值更新
  • 只有在用户想要查看数据时,应用才会偶尔打开。大多数情况下,它是未打开的,因此没有客户正在收听该文档

Firestore API中是否有任何方法可以检测是否正在侦听文档?

否,这是不可能的。编写文档的代码将无条件地这样做。如果没有侦听器,就无法安排写操作,也无法确定是否有侦听器。您需要设置一些其他(更复杂的系统)来执行类似的操作。

正如Doug所说,Firestore中没有内置任何东西来检测数据上是否有侦听器。我能想到的最接近的是(某种程度上)内置在Firebase的其他数据库(实时数据库)中的,但Firestore上不存在(目前正在为其进行扩展)

但即使这样,您也可能需要做一些额外的工作,专门跟踪每个客户机正在收听的收藏。可以归结为:

  • 附加观察者时,还要在实时数据库中记录该观察者。同时,为该节点注册一个
    onDisconnect
    处理程序,以便在客户端断开连接时自动将其删除
  • 分离OBERVER时,从实时数据库中删除其记录,并删除
    onDisconnect
    处理程序
  • 现在,在您的publisher应用程序中,您可以检测到每个集合有多少观察者

  • 嘿,杰。下面有两个人试图帮助你。如果答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题(即使不是您希望的答案),请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见