[发明专利]一种实现App与服务端时间同步的方法在审
申请号: | 201811329501.9 | 申请日: | 2018-11-09 |
公开(公告)号: | CN109560889A | 公开(公告)日: | 2019-04-02 |
发明(设计)人: | 邱平;林万青 | 申请(专利权)人: | 福建福诺移动通信技术有限公司 |
主分类号: | H04J3/06 | 分类号: | H04J3/06;H04L12/26;H04L29/08 |
代理公司: | 福州元创专利商标代理有限公司 35100 | 代理人: | 蔡学俊 |
地址: | 350003 福建省福州市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 服务端 时间同步 网络延时 请求报文 时间变动 手机开机 网络延迟 持续性 时间戳 同步性 算法 保存 更新 优化 服务 | ||
1.一种实现App与服务端时间同步的方法,其特征在于,包括如下步骤:
步骤S1、App与服务端时间偏差值、网络延迟时长的获取与计算:
在正常业务请求报头即Http Header中嵌入客户端和服务端的时间戳,具体记录的时间戳如下:
(1.1)App提交给服务端的请求包离开App的时间T1;
(1.2)服务端返回App的应答报文中包含服务端接收到请求包的时间T2、应答包离开服务端的时间T3;
(1.3)App接收到应答包的时间T4;
通过上述4个时间参数T1、T2、T3、T4,即可计算出2个参数:网络延迟时长d、App与服务端之间的时间偏差△t;
步骤S2、实现App与服务端保持时间一致性:
(2.1)App在启动时调用接口获取服务端的应答包离开服务端的时间T3,App将T3+d/2作为当前的服务端时间保存在App侧,并且标注该变量为ServerTime;
(2.2)App在收到服务端应答包的同时,调用手机端的SystemClock.elapsedRealtime() 方法,获取手机端系统开机时间,并且记录该变量为elapsedTime;同时记录本次的网络延时时长d为变量delayTime;
(2.3)App后续请求中,报头的T1=ServerTime+SystemClock.elapsedRealtime()-elapsedTime,该时间T1即目前App侧保持的服务端时间。
2.根据权利要求1所述的一种实现App与服务端时间同步的方法,其特征在于,还包括一步骤S3,即通过持续更新提高时间一致性精度:由于获取服务端时间的准确程度受网络延时时长d的影响,理论上d越小的情况下获取的服务端时间越接近实际值;根据这个原则,每次计算请求的网络延时时长d时,当新的d比App记录的d更小时,则采用这次请求的服务端时间更新App记录的ServerTime;具体实现如下:
(3.1)App在收到服务端应答包后计算本次请求的网络延时d,若d<delayTime则继续后续步骤(3.2)进行校准,否则不进行校准;
(3.2)更新App侧的ServerTime=T3+d/2;更新elapsedTime=SystemClock.elapsedRealtime();更新delayTime=d。
3.根据权利要求1或2所述的一种实现App与服务端时间同步的方法,其特征在于,所述步骤S1中,网络延迟时长d、App与服务端之间的时间偏差△t的具体计算方式如下:
根据各时间参数之间的关系,可知:
T2-T1-△t = d1
T4-T3+△t = d2
d1+d2 = d
假设请求包网络延迟时长d1与应答包网络延迟时长d2相等,则可以推导出:
△t = ((T2+T3)-(T1+T4))/2
d = (T2-T1)+(T4-T3)
由此得出每个请求的App与服务端的时间偏差值△t以及网络延迟时长d。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建福诺移动通信技术有限公司,未经福建福诺移动通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811329501.9/1.html,转载请声明来源钻瓜专利网。