通过套接字同步秒表运行时持续时间



目前在多个设备上运行的秒表通过套接字服务器保持同步。当设备启动秒表时,它会向套接字服务器发送一条消息,侦听的其他客户端会看到此信息并启动其秒表。没有大量的延迟,所以当它们运行时,时间彼此略有不同,这没什么大不了的。

但是,当按下"暂停"或"停止"时,我们希望在暂停客户端设备上显示的最终时间也显示在所有设备上

。目前,以下是计时器停止/暂停时发生的情况:

long time = Long.parseLong(message);
mChronometer.setBase(time);

正在发送的消息来自以下代码:

this.sendWebRequestStopTimer(mChronometer.getBase())

虽然这确实会导致时间调整,但它通常略有偏差不到一秒,通常为 100-400 毫秒。我认为这是因为尽管相同的 NTP 服务器,但每个设备的时间略有不同。

简而言之,有没有更好的方法来调整代码,以便子设备显示与父设备完全相同的时间(点击暂停的设备)?

注意:任何设备都可以播放/暂停/停止秒表。没有一台设备负责控制此秒表功能。因此,device 1可以启动计时器,device 2可以暂停计时器,device 3可以恢复计时器。

让按下暂停/停止的设备将其时间发送到服务器,并将其回显到所有其他设备。 除了硬连线专用网络之外,真的没有其他方法可以做到这一点。 即使这样,您仍然会在 10 毫秒的范围内留下一些差异。 当然,这可能会导致某些设备显示较小的数字,看起来像是回到了过去。 没有真正的方法来避免这种情况。

最新更新