在单独的设备上同步间隔功能的方法

时间:2015-03-28 04:24:19

标签: node.js heroku socket.io

我正在尝试在单独的设备上预编程一个间隔功能,以便彼此同步。因此,几个运行相同间隔的移动设​​备同步运行。起初我以为我可以使用设备内部时钟并在0分钟启动功能。我现在意识到移动时钟并非真正准确,并且彼此不同步。现在我需要一个新的解决方案。

我使用heroku,node.js,socket.io和ionic如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

从概念上讲,您可以执行以下操作:

  1. 让每个客户建立时间参考与普通服务器。
  2. 当要开始换色效果时,将来会在短时间内向每个客户发送一个换色消息,并带有特定的时间戳。
  3. 当每个客户收到换色消息时,它会在未来的短时间内查看预定的时间戳,更正时间参考并安排事件与其自己的时钟。
  4. 当该时间到达每个客户时,每个客户开始播放该活动。
  5. 这将与您在步骤1中建立的时间参考一样准确,并且这是棘手部分的位置,并且确定了准确性不足的准确性。在这篇文章中有一种方法的描述:Measuring time difference between networked devices

    在客户端时钟和参考时钟之间建立时间增量后,您可以在本地存储该增量,并且可以将该增量应用于来自服务器的任何未来时间指令。因此,如果您收到指令在12:30:05.00执行某些操作,但您的客户端时钟已从服务器参考快速测量为+12.33秒,那么您将从预定时间减去+12.33秒设置一个定时器,在本地时钟上以12:29:52.67开启。

    通过在将来的特定时间发送指令,您可以处理到每个客户端的传输时间可能不同的事实。您可以在将来的任何时间进行选择,但未来的时间不得超过任何客户的最长运输时间。您还可以从每个客户端测量并将其报告给服务器,或者如果您有足够的时间提前安排,您可以提前至少几秒钟发送带有指令的消息(比任何传输时间可能更长)在正常的操作条件下)。