在不同设备上同步间隔功能的方法
Method for syncing interval functions over separate devices
我正在尝试获得一个间隔函数,在不同的设备上预先编程,以便彼此同步。因此,多个移动设备都 运行 具有同步的相同间隔功能。起初我以为我可以只使用设备内部时钟并在分钟的 0 开始功能。我现在意识到移动时钟并不是真的那么准确并且彼此不同步。现在我需要一个新的解决方案。
我正在使用 heroku、node.js、socket.io 和 ionic(如果有帮助的话)。
从概念上讲,您可以执行以下操作:
- 让每个客户端建立时间参考与公共服务器。
- 在即将开始变色效果时,向每个客户端发送带有特定时间戳的变色消息。
- 当每个客户端收到颜色变化消息时,它会查看未来一小段时间的预定时间戳,更正时间参考并安排事件与自己的时钟。
- 当那个时间到达每个客户端时,每个客户端开始播放事件。
这将与您在第 1 步中建立的时间参考一样准确,这是棘手的部分,也是确定准确性不足的地方。 post 中描述了一种方法:Measuring time difference between networked devices。
一旦建立了客户端时钟和参考时钟之间的时间增量,就可以在本地存储该增量,并且可以将该增量应用到来自服务器的任何未来时间指令。因此,如果您收到在 12:30:05.00 执行某些操作的指令,但您的客户端时钟已被测量为比服务器参考快 +12.33 秒,那么您将从计划中减去 +12.33 秒时间并设置一个定时器,该定时器将在您本地时钟的 12:29:52.67 触发。
您通过发送未来特定时间的指令来处理每个客户的运输时间可能不同的事实。您可以选择未来的任何时间,但未来的时间不得长于任何客户的最长运输时间。您还可以从每个客户端测量并将其报告给服务器,或者如果您有足够的时间提前安排,您可以至少提前几秒发送带有指令的消息(比任何可能的传输时间都长)处于正常工作条件下)。
我正在尝试获得一个间隔函数,在不同的设备上预先编程,以便彼此同步。因此,多个移动设备都 运行 具有同步的相同间隔功能。起初我以为我可以只使用设备内部时钟并在分钟的 0 开始功能。我现在意识到移动时钟并不是真的那么准确并且彼此不同步。现在我需要一个新的解决方案。
我正在使用 heroku、node.js、socket.io 和 ionic(如果有帮助的话)。
从概念上讲,您可以执行以下操作:
- 让每个客户端建立时间参考与公共服务器。
- 在即将开始变色效果时,向每个客户端发送带有特定时间戳的变色消息。
- 当每个客户端收到颜色变化消息时,它会查看未来一小段时间的预定时间戳,更正时间参考并安排事件与自己的时钟。
- 当那个时间到达每个客户端时,每个客户端开始播放事件。
这将与您在第 1 步中建立的时间参考一样准确,这是棘手的部分,也是确定准确性不足的地方。 post 中描述了一种方法:Measuring time difference between networked devices。
一旦建立了客户端时钟和参考时钟之间的时间增量,就可以在本地存储该增量,并且可以将该增量应用到来自服务器的任何未来时间指令。因此,如果您收到在 12:30:05.00 执行某些操作的指令,但您的客户端时钟已被测量为比服务器参考快 +12.33 秒,那么您将从计划中减去 +12.33 秒时间并设置一个定时器,该定时器将在您本地时钟的 12:29:52.67 触发。
您通过发送未来特定时间的指令来处理每个客户的运输时间可能不同的事实。您可以选择未来的任何时间,但未来的时间不得长于任何客户的最长运输时间。您还可以从每个客户端测量并将其报告给服务器,或者如果您有足够的时间提前安排,您可以至少提前几秒发送带有指令的消息(比任何可能的传输时间都长)处于正常工作条件下)。