Firebase 时间戳同步

Firebase Timestamp Syncing

在我的回合制在线游戏中,我有一个游戏内计时器,它会从 24 小时滴答到 0,当任何玩家输掉时它达到 0。 轮到玩家时,他们会向数据库写入如下内容:

action: "not important"
timeStamp: 1670000000

我想要的是两个玩家中的任何一个都能够随时进入正在进行的游戏,读取“timeStamp”并相应地设置时钟,显示自上次操作以来还剩下多少时间。

写入数据库时​​,我使用 ServerValue.TIMESTAMP (Android)。我知道使用此处描述的 ServerTimeOffset 来估计服务器时间的能力;

https://firebase.google.com/docs/database/android/offline-capabilities#server-timestamps

但是我感觉测试的时候并不总是准确的,所以我想探索一下是否有其他方法可以做到这一点。我真正想要的是在读取节点时获取实际的服务器时间戳:

timeLeft = actionTimeStamp - currentServerTime + 24h

这可以一次完成吗?我正在使用 RTDB,但如果可能的话,我愿意迁移到 Firestore。

如果不将服务器时间戳写入数据库,就无法获取服务器时间戳,但是您当然可以让每个客户端都写入它,然后立即读回。

也就是说,使用写入的初始开始时间和 serverTimeOffset 值应该没有太大区别。

有关工作示例,请查看