【问题标题】:Android: Sync CountDownTimer across multiple clients using Firebase Realtime DatabaseAndroid:使用 Firebase 实时数据库跨多个客户端同步 CountDownTimer
【发布时间】:2020-04-04 10:53:36
【问题描述】:

我正在使用 Android 和 Firebase 实时数据库开发一个应用程序,其中用户加入一个房间,然后当主机按下开始游戏时,所有客户端启动主游戏活动(通过房间中“已启动”子节点上的 ValueEventListener) .主游戏有 60 秒倒计时,用户在此期间造句,然后在 60 秒结束时收集并显示所有句子。

由于 60 秒计时器在不同的客户端上是如此关闭,我很难在最后收集所有句子。我需要一种方法来确保所有游戏同时结束,以便收集过程顺利且不会遗漏任何东西。

我知道 Firebase 两者都有:/.info/serverTimeOffsetServerValue.TIMESTAMP,但我正在努力研究如何使用它们来同步计时器。

我尝试使用System.currentTimeMillis() + serverTimeOffset 来估计服务器时间并让所有客户端倒计时到endTime - (System.currenTimeMillis() + serverTimeOffset) 其中endTime 是主机写入数据库的时间,所有客户端都读取但计时器仍然存在关闭。

处理这种情况的最佳方法是什么?

【问题讨论】:

  • 客户端之间的定时器偏移量是多少?
  • 我即将实现类似的东西,但我知道由于不同的变量,定时器会在不同的设备上偏移。你是怎么解决这个问题的?

标签: android firebase firebase-realtime-database countdowntimer


【解决方案1】:

我建议:

无需在服务器上运行每秒更新的计时器,只需存储事件的开始/停止时间并允许客户端管理自己的计时器。

不是每秒 -1 完成(因为 setInterval 和其他客户端工具不是很精确),而是通过将当前时间戳与结束时间进行比较,并确定差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    相关资源
    最近更新 更多