时间是幻觉。 —— 阿尔伯特·爱因斯坦
为 iOS 优化的混合逻辑时钟。
精确时钟同步很困难。对于移动设备而言,这个问题更为严重。当时钟不同步时,确定事件的顺序可能变得困难。
此库包含用于处理时钟同步相关问题的工具。
混合逻辑时钟允许在多个设备上创建的不同时钟的事件之间进行因果排序。
参见: http://muratbuffalo.blogspot.com/2014/07/hybrid-logical-clocks.html
当时钟略有不同步时,混合逻辑时钟很有用。用户控制的移动设备可能有错误的时区设置等原因导致的时钟与标准时间相差数小时,这超出了 HLC 设计的补偿范围。
一个简单的选项是根据从 http 响应中接收到的 Date 头维护一个偏差。比如在首次登录时执行这项操作,以便在应用启动时同步时钟。这应该足以让 iPad 的时钟与“真实时间”相差几秒钟。
另一个选项是使用 NTP。NHNetworkTime 是一个可以使用的 NTP 实现:https://github.com/huynguyencong/NHNetworkTime
import HLClock
// Create a new timestamp
let newTimestamp = HLClock.global.now()
// Update clock when receiving a new message
HLClock.global.update(message.timestamp)
要运行示例项目,请克隆仓库,然后从 Example 目录运行 pod install
。
HLClock 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod "HLClock"
HLClock 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。