一种客户端向服务器通信的时间异步对照方法及系统
技术领域
本发明涉及互联网通信中的网络时间同步对照领域,具体涉及一种客户端向服务器通信的时间异步对照方法及系统。
背景技术
用户通过客户端(手机或电脑等)向服务器请求计时类任务时(例如客户端向服务器请求领取具备等待时间的奖励),客户端与服务器进行通信的方式一般为:1、用户通过客户端主动向服务器请求询问服务器时间,2、客户端每30秒自动向服务器请求询问服务器时间。
上述客户端与服务器进行通信的方式存在以下缺陷:
若用户的数量较多,服务器会持续与大量的客户端通信,即客户端主动/自动向服务器的请求询问的次数较多,进而使得服务器的负荷较大;不仅增大了服务器的维修工作量,而且若对服务器的维护稍有不慎,会出现服务器发生系统崩溃的情形。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:大量减少客户端主动和自动向服务器请求询问服务器时间的次数,显著降低服务器的负荷。本发明能够减小时间误差,提高任务的完成精度。
为达到以上目的,本发明提供的客户端向服务器通信的时间异步对照方法,包括以下步骤:
步骤A:用户需要进行计时类任务时,客户端向服务器发送计时类任务请求,服务器收到计时类任务请求后返回当前服务器时间至客户端、并根据当前计时类任务的任务时间进行服务器倒计时;客户端根据当前服务器时间同步本地时间后,根据当前计时类任务的任务时间进行本地倒计时,转到步骤B;
定义客户端的本地倒计时时间为t,客户端收到的时间确认请求次数的总和为n;客户端向服务器发送时间确认消息的发送次数阈值为N、发送时间阈值为M;
步骤B:在本地倒计时周期内,客户端监测t和n:
当0<n<N、且t>M时,客户端不发送时间确认消息至服务器,重新跳转至步骤B;
当n≥N、且t>0时,客户端发送时间确认消息至服务器、并重置n为0;服务器收到时间确认消息后向客户端返回当前服务器时间,客户端根据当前服务器时间同步更新本地时间、并根据更新后的本地时间重新进行本地倒计时,重新跳转至步骤B;
当n<N、且0<t≤M时,客户端发送时间确认消息至服务器,服务器收到时间确认消息后向客户端返回当前服务器时间;客户端根据当前服务器时间同步更新本地时间、并根据更新后的本地时间重新进行本地倒计时,重新跳转至步骤B;
当t=0时,客户端发送时间确认消息至服务器,服务器收到时间确认消息后向客户端返回当前服务器时间,当前服务器时间与本地时间相同时转到步骤C;
步骤C:客户端告知用户当前计时类任务完成。
本发明提供的实现上述方法的客户端向服务器通信的时间异步对照系统,包括设置于客户端上的任务发起模块、本地计时器、时间确认消息监测模块和任务完成模块;该系统还包括设置于服务器上的服务端计时模块;
任务发起模块用于:用户需要进行计时类任务时,向服务器发送计时类任务请求;
服务端计时模块用于:当服务器收到计时类任务请求时,返回当前服务器时间至客户端、并根据正在进行的计时类任务的任务时间进行服务器倒计时;当服务器收到时间确认消息时,返回当前服务器时间至客户端;
本地计时器用于:当客户端首次收到服务端计时模块返回的服务器时间时,根据当前服务器时间同步本地时间,根据正在进行的计时类任务的任务时间进行本地倒计时;当客户端非首次收到服务端计时模块返回的服务器时间时,根据当前服务器时间同步更新本地时间,根据更新后的本地时间重新进行本地倒计时;
时间确认消息监测模块用于:在本地计时器的倒计时周期内,监测本地计时器的本地倒计时时间t、以及客户端收到的时间确认请求次数的总和n:
当n≥N、且t>0时,发送时间确认消息至服务器、并重置n为0;
当n<N、且0<t≤M时,发送时间确认消息至服务器;其中N为向服务器发送时间确认消息的发送次数阈值,M为向服务器发送时间确认消息的发送时间阈值;
当t=0时,发送时间确认消息至服务器,发送任务完全确认消息至任务完成模块;
任务完成模块用于:收到任务完全确认消息后,若服务器返回的当前服务器时间与本地时间相同,则显示正在进行的计时类任务完成消息;结束本地计时器和时间确认消息监测模块的工作。
与现有技术相比,本发明的优点在于:
本发明进行计时类任务时,不采用现有技术中每30秒自动向服务器请求询问服务器时间,而是在任务即将完成阶段(用户请求确认时间的次数较多、或者本地倒计时时间快结束时)向服务器请求询问服务器时间、并进行时间同步和更新本地倒计时时间;若用户请求确认时间的次数较少,本发明不与服务器通信,直接反馈用户消息,显示本地时间。
有鉴于此,本发明能够大量减少客户端主动和自动向服务器请求询问服务器时间的次数,进而显著降低服务器的负荷,减小服务器的维修工作量,使用比较安全。
与此同时,基于设备性能和不稳定原因,本地时间会与服务器时间之间出现10秒到1分钟不等的时间误差;本发明在任务即将完成阶段向服务器请求询问服务器时间并进行时间同步,不仅能够达到减小时间误差,而且能够防止用户修改本地时间进行作弊,进而达到提高任务完成精度的目的。
附图说明
图1为本发明实施例中客户端向服务器通信的时间异步对照方法的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的客户端向服务器通信的时间异步对照方法,包括以下步骤:
S1:用户需要进行计时类任务时,客户端根据服务器返回的当前服务器时间同步本地时间后,根据当前计时类任务的任务时间进行本地倒计时;服务器向客户端返回服务器时间后,根据当前计时类任务的任务时间进行服务器倒计时,转到S2。
S1的具体流程为:
S101:当用户需要进行计时类任务时,用户在客户端的用户界面上点击启用任务,客户端向服务器发送计时类任务请求,此时用户界面显示加载中(等待服务器反馈初始时间和初始状态),转到S102。
S102:服务器向客户端返回附带任务标识(任务标识用于表示该服务器时间对应的任务)的服务器时间后,根据当前计时类任务的任务时间开始倒计时。客户端向服务器获取附带任务标识的服务器时间;例如Eg 01-000022,Eg 01为当前计时类任务初始阶段-开始,000022为服务器时间00:00:22,转到S103。
S103:客户端根据服务器返回的服务器时间同步本地时间,客户端根据当前计时类任务的任务时间开始倒计时,此时用户界面显示倒计时启动,例如XX分XX秒(计时类任务的计时时间周期)之后结束,并持续展示本地倒计时时间。
定义客户端的本地倒计时时间为t,客户端收到的用户发出的时间确认请求次数的总和为n;客户端向服务器发送时间确认消息的发送次数阈值为N(N可自定义设置,至少1次,本实施例中为5)、发送时间阈值为M(M大于0,可自定义设置,本实施例中为30秒)。
S2:在本地倒计时周期内,客户端监测t和n:
当0<n<N、且t>M时,客户端不发送时间确认消息至服务器,转到S3;
当n≥N、且t>0(此时不考虑M),或者n<N、且0<t≤M时,客户端主动发送时间确认消息至服务器,转到S4;
当t=0时,无论n为多少,客户端自动发送时间确认消息至服务器,转到S5。
S3:直接本地反馈用户消息,显示本地时间,重新跳转至S2。
S4:服务器收到时间确认消息后向客户端返回附带任务标识的当前服务器时间,客户端根据当前服务器时间同步更新本地时间、并根据更新后的本地时间重新进行本地倒计时(若n大于等于N,则重置n为0),重新跳转至S2。
S4中根据更新后的本地时间重新进行本地倒计时的计算方法为:h=t+x-y,其中h为重新进行本地倒计时的开始时间,x为当前本地时间,y为当前服务器时间,t为S2中已经定义的当前本地倒计时时间。
S5:服务器收到时间确认消息后向客户端返回附带任务标识的当前服务器时间,客户端判断当前服务器时间是否与本地时间相同,若是,转到S6,否则重新执行S4。
在执行S2至S5的过程中,当服务器的服务器倒计时时间为0时,服务器向客户端发送任务完成消息,客户端收到任务完成消息后,直接转到S6。
S6:客户端将本地倒计时时间和本地时间清零、并在界面上显示通知(通知行为基于产品设计部分状态下并不会主动提示用户可领取)。用户在界面上可查看到当前任务状态为完成,点击领取按钮获得奖励。客户端发送结束消息至服务器,服务器执行结束流程后,反馈消息至客户端(时间服务器确认并传递结束消息至任务服务器,任务服务器确认执行完毕并反馈消息至客户端)。
本发明实施例中的实现上述方法的客户端向服务器通信的时间异步对照系统,包括设置于客户端上的任务发起模块、本地计时器、时间确认消息监测模块和任务完成模块;还包括设置于服务器上的服务端计时模块。
任务发起模块用于:用户需要进行计时类任务时,向服务器发送计时类任务请求。
服务端计时模块用于:
(1)当服务器收到计时类任务请求时,返回当前服务器时间至客户端、并根据正在进行的计时类任务的任务时间进行服务器倒计时;在服务器倒计时时间为0时,向任务完成模块发送任务完成消息。
(2)当服务器收到时间确认消息时,返回当前服务器时间至客户端。
本地计时器用于:
(1)当客户端首次收到服务端计时模块返回的服务器时间时,根据当前服务器时间同步本地时间,根据正在进行的计时类任务的任务时间进行本地倒计时。
(2)当客户端非首次收到服务端计时模块返回的服务器时间时,根据当前服务器时间同步更新本地时间,根据更新后的本地时间重新进行本地倒计时;重新进行本地倒计时的计算方法为:h=t+x-y。
时间确认消息监测模块用于:在本地计时器的倒计时周期内,监测t和n:
(1)当n≥N、且t>0时,发送时间确认消息至服务器、并重置n为0;
(2)当n<N、且0<t≤M时,发送时间确认消息至服务器;
(3)当t=0时,发送时间确认消息至服务器,发送任务完全确认消息至任务完成模块。
任务完成模块用于:
(1)收到任务完全确认消息后,若服务器返回的当前服务器时间与本地时间相同,则显示正在进行的计时类任务完成消息;结束本地计时器和时间确认消息监测模块的工作。若服务器返回的当前服务器时间与本地时间不同,则向本地计时器发送同步更新信息,本地计时器收到同本更新信息后,根据当前服务器时间同步更新本地时间、并根据更新后的本地时间重新进行本地倒计时。
(2)收到服务端计时模块发送的任务完成消息后,显示正在进行的计时类任务完成消息,结束本地计时器和时间确认消息监测模块的工作。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。