【发布时间】:2019-10-06 11:58:09
【问题描述】:
我希望用户发送的数据在 10 分钟后到达 firebase 实时数据库。有捷径吗?我目前的方法非常昂贵。在我现在使用的方法中,我先将其发送到服务器。在服务器上等待 10 分钟后,我将其发送到 Firebase 实时数据库。有没有办法直接做到这一点?
【问题讨论】:
标签: java android firebase firebase-realtime-database
我希望用户发送的数据在 10 分钟后到达 firebase 实时数据库。有捷径吗?我目前的方法非常昂贵。在我现在使用的方法中,我先将其发送到服务器。在服务器上等待 10 分钟后,我将其发送到 Firebase 实时数据库。有没有办法直接做到这一点?
【问题讨论】:
标签: java android firebase firebase-realtime-database
显然,您还希望数据在 10 分钟后写入 即使用户在数据写入之前关闭应用程序。
实现此目的的唯一方法是设置第二台服务器。
您的应用程序将数据写入第二个服务器,并附有说明,以便在 10 分钟后将其发送到 Firebase 数据库。
第二台服务器设置了一个计划任务(或其他),在 10 分钟延迟后将数据写入 Firebase。
为了使这个可靠,第二个服务器需要一个数据库来存储请求,以防它在有待发送的写入请求时崩溃并重新启动。然后当它重新启动时,它需要扫描它的表以查找任何应该发送的请求,然后发送它们。
在重新阅读您的问题时,似乎可能是您已经实现的。 (尽管您没有提到崩溃和恢复问题。)
这一切都相当奇怪和复杂,这让我想知道这是否是XY Problem 的一个例子。难道你不能立即将数据写入 Firebase,并在数据中添加一个额外的属性来说明它何时变为活动状态吗?
【讨论】:
Firebase 实时数据库中没有内置功能来向服务器发送延时写入。唯一类似的功能是onDisconnect,当服务器检测到客户端已断开连接时,它会向数据库发送写入操作。但是这个写操作没有时间延迟。
由于 Firebase 未内置此功能,因此您必须自己构建。拥有处理延时写入的自定义服务器端代码(或云函数)是我能想到的最简单的方法。
【讨论】: