如何将延迟和离线数据写入Firebase实时数据库?

时间:2019-10-06 11:58:09

标签: java android firebase firebase-realtime-database

我希望用户发送的数据在10分钟后到达Firebase实时数据库。有捷径吗?我当前的方法非常昂贵。在我现在使用的方法中,我首先将其发送到服务器。在服务器上等待10分钟后,我将其发送到Firebase Realtime Database。有办法直接做到这一点吗?

2 个答案:

答案 0 :(得分:2)

显然,您还希望在10分钟后写入数据。即使用户在写入数据之前关闭了应用程序

实现此目标的唯一方法是设置第二台服务器。

  • 您的应用程序会按照说明将数据写入第二台服务器,并在10分钟后将其发送到Firebase数据库。

  • 第二台服务器设置了计划任务(或其他任务),以在10分钟的延迟后将数据写入Firebase。

为确保可靠性,第二台服务器需要一个数据库来存储请求,以防万一崩溃并在有待发送的写请求要发送时重新启动。然后,当它重新启动时,它需要扫描其表以查找应发送的所有请求,然后将其发送。

重新阅读您的问题后,看来可能是您已经实现的内容。 (尽管您没有提到崩溃和恢复问题。)


这一切都非常奇怪和复杂,这使我想知道这是否是XY Problem的示例。您不能立即将数据写入Firebase,并向数据添加额外的属性以说出它何时变为活动状态?

答案 1 :(得分:0)

Firebase实时数据库没有内置功能可将延迟的写入发送到服务器。唯一类似的功能是onDisconnect,它将功能发送到数据库的写操作在服务器检测到客户端已断开连接时执行。但是此写操作没有时间延迟。

由于Firebase并未内置此功能,因此您必须自己构建它。我可以想到的最简单的方法就是拥有用于处理延时写入的自定义服务器端代码(或Cloud Functions)。