在线状态的接收方法及装置、存储介质、电子装置与流程

文档序号:24069146发布日期:2021-02-26 14:18阅读:63来源:国知局
在线状态的接收方法及装置、存储介质、电子装置与流程

[0001]
本发明涉及通信领域,具体而言,涉及一种在线状态的接收方法及装置、存储介质、电子装置。


背景技术:

[0002]
在物联网云云对接场景中,直连设备每一分钟有一次心跳数据发送到gateway(又称云网关),如果该设备超过一小时没有任何数据上来,云网关会先去查询该心跳的设备是否在云网关在线,如果云网关不在线,则云网关记录设备信息,并且将补上线信息发送给云网关上游系统(又称core),以及core的上游系统(又称appserver,客户端服务器),这就保证了设备在线状态在系统内和直连设备的在线状态一致。
[0003]
但是云设备不直接云网关交互,而是通过第三方云服务器和云网关交互。假设core服务器重启后,云网关不重启,云网关认为所有的云设备是在线的,云设备在第三方服务器云在线,升级过后假设用户开始控制家电,appserver下发控制指令,core发现设备不在线,直接给用户返回设备不在线信息,但是实际上设备在线,用户无法控制设备,可能遭到用户投诉。该场景下唯一的办法只能等云设备主动上报属性到第三方云服务器,第三方云服务器将设备属性等数据发送给云网关,云网关重新上线,将消息同步到core和appserver,之后用户才能控制成功。
[0004]
针对相关技术中,只能依靠云设备主动上报在线状态至云网关,进而才能控制设备,进而导致的无法有效保障云网关侧保存的在线状态与云设备的真实在线状态一致的问题,尚未提出有效的解决方案。


技术实现要素:

[0005]
本发明实施例提供了一种在线状态的接收方法及装置、存储介质、电子装置,以解决相关技术中只能依靠云设备主动上报在线状态至云网关,进而才能控制设备,进而导致的无法有效保障云网关侧保存的在线状态与云设备的真实在线状态一致的问题。
[0006]
根据本发明的一个实施例,提供了一种在线状态的接收方法,包括:云网关向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;所述云网关接收所述第三方服务器反馈的所述第一云设备的在线状态。
[0007]
可选的,云网关向第三方服务器发送查询信息,包括:所述云网关获取云设备的离线时间戳和/或最后活跃时间戳,其中,所述;离线时间戳用于指示所述云设备的离线时间,所述最后活跃时间戳用于指示所述云设备的最后活跃时间;根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态,其中,所述获取情况用于指示所述云网关是否接收到所述离线时间戳和/或最后活跃时间戳;在确定所述云设备的在线状态的维持时间超过预设阈值的情况下,云网关向第三方服务器发送查询信息。
[0008]
可选的,根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态,包括:在所述云网关接收到所述离线时间戳和最后活跃时间戳的情况下,根据所述离线时间戳和所述最后活跃时间戳的时间大小确定所述云设备的在线状态;在所述云网关仅接收到所述最后活跃时间戳的情况下,确定所述云设备的在线状态为在线;在所述云网关仅接收到所述离线时间戳的情况下,确定所述云设备的在线状态为离线;在所述云网关未接收到所述离线时间戳和最后活跃时间戳的情况下,确定所述云设备的在线状态为离线。
[0009]
可选的,根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态之后,所述方法还包括:获取云设备的离线的维持时间大于所述预设阈值的云设备的第一设备信息,并将所述第一设备信息加入到第一列表中;和/或获取所述第一设备信息中需要同步到消息传递组件的第二设备信息,并将所述第二设备信息加入到第二列表中。
[0010]
可选的,云网关向第三方服务器发送查询信息之前,所述方法还包括:判断所述云网关是否满足预设条件,其中,所述预设条件包括以下至少之一:所述云网关的定时任务执行的的条件已满足,其中,所述定时任务用于在第三方服务器,所述云网关,消息传递组件之间同步云设备的在线状态;所述消息传递组件向所述云网关查询所述云设备的在线状态。
[0011]
可选的,云网关向第三方服务器发送查询信息之后,所述方法还包括:所述云网关获取在线状态为在线的第二云设备,其中,所述第二云设备的在线的维持时间超过所述预设阈值;在预设时间段内,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件。
[0012]
可选的,在预设时间段内,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件之前,所述方法还包括:通过以下方式确定所述预设时间段:获取系统的当前时间,所述最后活跃时间戳,以及目标时间戳;根据所述当前时间,所述最后活跃时间戳,以及目标时间戳确定所述预设时间段。
[0013]
根据本发明的另一个实施例,还提供了一种在线状态的接收设备,应用于云网关,包括:发送模块,用于向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;接收模块,用于接收所述第三方服务器反馈的所述第一云设备的在线状态。
[0014]
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行以上任一项中所述的方法。
[0015]
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行以上任一项中所述的方法。
[0016]
通过本发明,云网关向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;所述云网关接收所述第三方服务器反馈的所述第一云设备的在线状态,即云网关主动向第
三方服务器查询云设备的在线状态。采用上述技术方案,解决了相关技术中只能依靠云设备主动上报在线状态至云网关,进而才能控制设备,进而导致的无法有效保障云网关侧保存的在线状态与云设备的真实在线状态一致的问题。进而云网关可以主动向第三方服务器询问超过预设阈值不在线的云设备在线状态,有效的保证了云网关侧保存的在线状态与云设备的真实在线状态一致。
附图说明
[0017]
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018]
图1是本发明实施例的一种在线状态的接收方法的云网关的硬件结构框图;
[0019]
图2是根据本发明实施例的一种在线状态的接收方法的流程图;
[0020]
图3是根据本发明实施例的云设备数据上报流程图;
[0021]
图4是根据本发明实施例的云设备控制流程图;
[0022]
图5是根据本发明实施例的云设备探活内外系统交互流程图;
[0023]
图6是根据本发明实施例的定时扫描任务uml时序图;
[0024]
图7是根据本发明实施例的云网关定时任务中判断设备在线状态流程图;
[0025]
图8是根据本发明实施例的云设备最后活跃时间戳、云设备同步到core时间间隔和定时任务执行的时间点示意图;
[0026]
图9是根据本发明实施例的定时任务执行时间点1的示意图;
[0027]
图10是根据本发明实施例的定时任务执行时间点2的示意图;
[0028]
图11是根据本发明实施例的定时任务执行时间点n的示意图;
[0029]
图12是根据本发明实施例的定时任务执行时间点n+1的示意图;
[0030]
图13是根据本发明实施例的一种在线状态的接收方法的结构框图。
具体实施方式
[0031]
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0032]
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
[0033]
本申请实施例所提供的方法实施例可以在云网关,或者类似的运算装置中执行。以运行在云网关上为例,图1是本发明实施例的一种在线状态的接收方法的云网关的硬件结构框图。如图1所示,云网关可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器(microprocessor unit,简称是mpu)或可编程逻辑器件(programmable logic device,简称是pld))和用于存储数据的存储器104,在一个示例性实施例中,上述云网关还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述云网关的结构造成限定。例如,云网关还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
[0034]
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发
明实施例中的在线状态的接收方法的确定方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至云网关。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0035]
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括云网关的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
[0036]
在本实施例中提供了一种在线状态的接收方法,应用于上述云网关,图2是根据本发明实施例的在线状态的接收方法的流程图,该流程包括如下步骤:
[0037]
步骤s202:云网关向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;
[0038]
步骤s204:所述云网关接收所述第三方服务器反馈的所述第一云设备的在线状态。
[0039]
通过本发明,云网关向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;所述云网关接收所述第三方服务器反馈的所述第一云设备的在线状态,即云网关主动向第三方服务器查询云设备的在线状态。采用上述技术方案,解决了相关技术中只能依靠云设备主动上报在线状态至云网关,进而才能控制设备,进而导致的无法有效保障云网关侧保存的在线状态与云设备的真实在线状态一致的问题。进而云网关可以主动向第三方服务器询问超过预设阈值不在线的云设备在线状态,有效的保证了云网关侧保存的在线状态与云设备的真实在线状态一致。
[0040]
步骤s202的实现方式有多种,本发明实施例提供了一种可选实现方式:所述云网关获取云设备的离线时间戳和/或最后活跃时间戳,其中,所述离线时间戳用于指示所述云设备的离线时间,所述最后活跃时间戳用于指示所述云设备的最后活跃时间;根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态,其中,所述获取情况用于指示所述云网关是否接收到所述离线时间戳和/或最后活跃时间戳;在确定所述云设备的在线状态的维持时间超过预设阈值的情况下,云网关向第三方服务器发送查询信息。
[0041]
需要说明的是,所述离线时间戳和/或最后活跃时间戳的获取情况可以包括以下四种情况:离线时间戳和最后活跃时间戳都获取到;离线时间戳和最后活跃时间戳都未获取到;只获取到离线时间戳;只获取到最后活跃时间戳。
[0042]
基于上述四种情况,先确定所述云设备的在线状态。在确定所述云设备的在线状态后,比较所述云设备的在线状态的维持时间和预设阈值的大小,在确定所述云设备的在
线状态的维持时间超过预设阈值的情况下,云网关向第三方服务器发送查询信息。
[0043]
可选地,可以设置预设阈值设为1小时,当所述云设备离线时间或在线时间超过1个小时的时候,云网关主动向第三方服务器发送查询信息。采用上述技术手段,避免了在云设备不上报在线状态到第三方云服务器,第三方云服务器无法将在线状态等数据发送给云网关的问题,从而达到了云网关主动询问第三方服务器,在云网关得到消息(包括在线状态)后,将消息同步到core(相当于上述实施例的消息同步组件)和appserver,之后用户便可以根据正确的在线状态控制成功。
[0044]
在实际操作中,根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态,可以通过以下方式实现:
[0045]
1)在所述云网关接收到所述离线时间戳和最后活跃时间戳的情况下,根据所述离线时间戳和所述最后活跃时间戳的时间大小确定所述云设备的在线状态,这种情况存在是因为云设备在正常情况下包括至少经过了一次设备上线和下线整个流程,因此这两个时间戳都存在。当两个时间戳都存在,则哪个时间戳的时间最大,云设备在线状态为哪个。比如离线时间戳是13整点,最后活跃时间戳是14整点,此时,最后活跃时间戳大于离线时间戳,云设备在线状态是在线;
[0046]
2)在所述云网关仅接收到所述最后活跃时间戳的情况下,确定所述云设备的在线状态为在线,该情况存在是因为云设备只上线还没下线过;
[0047]
3)在所述云网关仅接收到所述离线时间戳的情况下,确定所述云设备的在线状态为离线,该情况存在是因为该云设备是云网关升级之前的注册的设备,设备中没有这两个时间戳,云网关不知道云设备的在线状态,需要去第三方服务器查询;
[0048]
4)在所述云网关未接收到所述离线时间戳和最后活跃时间戳的情况下,确定所述云设备的在线状态为离线,该情况存在是因为基于上述第三种情况,需要查询云设备的状态,如果第三方服务器返回云设备不在线,在云网关会保存离线时间戳,因此,只有离线时间戳。
[0049]
采用上述云设备的在线状态判断逻辑,就可以判断出所述云设备的在线状态。
[0050]
在根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态之后,所述方法还包括:获取云设备的离线的维持时间大于所述预设阈值的云设备的第一设备信息,并将所述第一设备信息加入到第一列表中;和/或获取所述第一设备信息中需要同步到消息传递组件的第二设备信息,并将所述第二设备信息加入到第二列表中。
[0051]
需要说明的是,第一列表可以用list1表示,第二列表可以用list2表示。获取云设备的离线的维持时间大于所述预设阈值的云设备的第一设备信息,将所述第一设备信息加入到list1中。比如,当预设阈值是1小时,且云设备的离线时间大于1小时,此时,将所述第一设备信息加入到list1中。在list1中的第一设备信息是云网关需要向第三方服务器主动询问的。当获取所述第一设备信息中需要同步到消息传递组件的第二设备信息时,将所述第二设备信息加入到list2中。list2中的第二设备信息是云网关需要同步到消息传递组件。通过上述技术手段,云网关就可以向第三方服务器主动查询云设备的在线状态,以及实现云网关与消息传递组件之间的消息同步。
[0052]
在云网关向第三方服务器发送查询信息之前,所述方法还包括:判断所述云网关是否满足预设条件,其中,所述预设条件包括以下至少之一:所述云网关的定时任务执行的
条件已满足,其中,所述定时任务用于在第三方服务器,所述云网关,消息传递组件之间同步云设备的在线状态;所述消息传递组件向所述云网关查询所述云设备的在线状态。
[0053]
需要说明的是,云网关的定时任务的执行周期是可以调整的。用synctimeinterval(相当于上述实施例的预设时间段)表示云网关同步到消息传递组件的时间间隔,用scanjobduration表示云网关定时任务周期。如果云网定时任务周期修改为5min,那么带来的问题是:所有在线的设备会5min一次同步到core,执行过于频繁。
[0054]
在本发明实施例中,在上述定时任务周期不大于3600s的情况下,无论云网关定时任务周期多少,对于在线的云设备,只同步最后活跃时间超过一小时的在线云设备到消息传递组件,并且每小时最多一次同步到消息传递组件。也就是说,在synctimeinterval是scanjobduration的整数倍,例如:synctimeinterval=60min,scanjobduration可取值为1、2、3、4、5、6、10、15、20、30、60min的情况下,无论云网关定时任务周期多少,对于在线的云设备,只同步最后活跃时间超过一小时的在线云设备到core,并且每小时最多一次同步到core。即能够调整云网关定时任务来解决不在线设备同步问题,而且不影响对在线设备的同步的周期。
[0055]
需要说明的是,云网关可以在云设备离线时间超过1小时的时候向第三服务器主动询问云设备在线状态,也可以在收到消息传递组件查询所述云设备的在线状态的时候,向第三服务器主动询问云设备在线状态。
[0056]
云网关向第三方服务器发送查询信息之后,所述方法还包括:所述云网关获取在线状态为在线的第二云设备,其中,所述第二云设备的在线的维持时间超过所述预设阈值;在预设时间段内,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件。
[0057]
需要说明的是,当所述第二云设备的在线的维持时间超过所述预设阈值时,所述云网关获取在线状态为在线的第二云设备。在所述云网关获取在线状态为在线的第二云设备之后,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件。实际上,云网关与消息传递组件的同步时间间隔是可以设置的。但是对于在线的云设备,只同步最后活跃时间超过一小时的在线云设备到消息传递组件,并且每小时最多一次同步到消息传递组件。即能够调整云网关定时任务来解决不在线设备同步问题,而且不影响对在线设备的同步的周期,所以一般情况下云网关每小时最多一次同步到消息传递组件。
[0058]
可选的,在预设时间段内,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件之前,所述方法还包括:通过以下方式确定所述预设时间段:获取系统的当前时间,所述最后活跃时间戳,以及目标时间戳;根据所述当前时间,所述最后活跃时间戳,以及目标时间戳确定所述预设时间段。需要说明的是定时任务需要用到目标时间戳,目标时间戳可以通过一种下线工具计算得到的,目标时间戳可以用timestamp来表示。
[0059]
例如,可以通过以下公式确定所述预设时间段:
[0060]
timestamp=(syscurrentts-onlinets)%synctimeinterval,其中,syscurrentts相当于系统的当前时间,onlinets相当于最后活跃时间戳,synctimeinterval相当于上述预设时间段,“%”用于表征取余操作。
[0061]
为了更好的理解上述技术方案,使用以下可选流程图用于解释说明云设备在线状态的上传与同步过程。
[0062]
其中,用gateway表示云网关,用core表示消息传递组件,用redis表示缓存,用onlinets表示最后活跃时间戳,用offlinets表示离线时间戳。
[0063]
图3是根据本发明实施例的云设备数据上报流程图,如图3所示,云设备给第三方云上传云设备在线状态;第三方云(相当于上述实施例的第三方服务器)向云网关上传云设备在线状态;云网关向core和缓存上传云设备在线状态;core向其他子系统上传云设备在线状态;其他子系统向app和数据库上传云设备在线状态。
[0064]
图4是根据本发明实施例的云设备控制流程图,如图4所示,app向其他子系统询问云设备在线状态,其他子系统向core询问云设备在线状态,core向云网关询问云设备在线状态,云网关向第三方云询问云设备在线状态,第三方云询问云设备在线状态,云设备给第三方云上传云设备在线状态,第三方云向云网关上传云设备在线状态,云网关向core和缓存上传云设备在线状态,core向其他子系统上传云设备在线状态,其他子系统向app和数据库上传云设备在线状态。
[0065]
图5是根据本发明实施例的云设备探活内外系统交互流程图,如图5所示,云网关向第三方云询问云设备在线状态,第三方云询问云设备在线状态,云设备给第三方云上传云设备在线状态,第三方云向云网关上传云设备在线状态,云网关向缓存上传云设备在线状态,云网关向其他子系统上传云设备在线状态,云网关向core上传云设备在线状态,其他子系统向数据库上传云设备在线状态。
[0066]
图6是根据本发明实施例的定时扫描任务uml时序图,如图6所示:云网关探活通过一个定时任务来实现同步云网关的在线状态和第三方设备在线状态。
[0067]
s601:云网关定时任务:云网关定时任务向网关获取最后活跃时间超过1小时的在线设备和离线超过1小时的设备集合;
[0068]
s602:网关通过keys向云网关获取云设备最后活跃时间戳和离线时间戳,进而遍历keys。获取云设备的离线的维持时间大于所述预设阈值的云设备的第一设备信息,并且将将所述第一设备信息加入到list1中,当获取所述第一设备信息中需要同步到消息传递组件的第二设备信息时,将所述第二设备信息加入到list2中。封装list1,list2,网关向云网关定时任务返回设备集合;
[0069]
s603:云网关定时任务更新缓存中的云设备最后活跃时间戳和离线时间戳。云网关向云网关redis查询设备信息查询目调地址url,redis向云网关返回url,云网关向云网关redis请求url,云网关redis向云网关返回信息,云网关定时任务更新云网关redis中的云设备最后活跃时间戳和离线时间戳,以及设备信息。
[0070]
s604:云网关定时任务向core发送云设备在线状态。
[0071]
图7是根据本发明实施例的云网关定时任务中判断设备在线状态流程图,如图7所示:
[0072]
s701:开始,从redis获取所有设备id集合,进行便利查询;
[0073]
s702:通过单个id获取设备最后活跃时间戳和离线时间戳;
[0074]
s703:判断onlinets==null&&offlinets==null,等式不成立执行s704,等式成立执行s707;
[0075]
s704:判断onlinets!=null&&offlinets!=null,等式不成立执行s705,等式成立执行s707;
[0076]
s705:判断onlinets==null,等式成立执行s706,等式不成立执行s708;
[0077]
s706:判断currents-offlinets>1小时,等式不成立执行s709,等式成立执行s707;
[0078]
s707:判断onlinets>=offlinets,等式不成立执行s702,等式成立执行s708;
[0079]
s708:判断currents-onlinets>1小时,等式不成立执行s702,等式成立执行s709;
[0080]
s709:判断最近1小时内是否发生同步到core,等式不成立执行s712,等式成立s711;
[0081]
s710:判断currents-offlinets>1小时,等式不成立执行s702,等式成立执行s711;
[0082]
s711:把设备在线状态信息加入list1;
[0083]
s712:把设备在线状态信息加入list2;
[0084]
s713:组装数据,结束。
[0085]
图8是根据本发明实施例的云设备最后活跃时间戳、云设备同步到core时间间隔和定时任务执行的时间点示意图,具体各个时间点示意图如图8所示:说明:
[0086]
计算公式:
[0087]
目标时间戳=(syscurrentts-onlinets)%synctimeinterval
[0088]
执行同步到core条件:
[0089]
syscurrentts>=onlinets+synctimeinterval&&目标时间戳<=scanjobduration
[0090]
接下来根据定时任务执行时间点来分析是否需要将在线的云设备同步到core。
[0091]
如图9-12所示,附图9中云网关需要将云设备信息同步到core,附图10中云网关不需要将云设备信息同步core,附图11云网关中不需要将云设备信息同步core,附图12中云网关需要将云设备信息同步到core。
[0092]
因此通过对图9、10、11、12的分析,可以得出结论:第1次同步到core与第二次同步到core的时间间隔为synctimeinterval,那么在synctimeinterval是scanjobduration的整数倍,例如:synctimeinterval=60min,scanjobduration可取值为1、2、3、4、5、6、10、15、20、30、60min的情况下。如此反复,最后得出结论,在线的云设备最后活跃超过一小时之后,最多一个小时一次同步到core。
[0093]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0094]
在本实施例中还提供了一种在线状态的接收设备,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0095]
图13是根据本发明实施例的一种在线状态的接收设备的结构框图;如图13所示,
包括:
[0096]
发送模块130,用于向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;
[0097]
接收模块132,用于接收所述第三方服务器反馈的所述第一云设备的在线状态。
[0098]
通过本发明,云网关向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;所述云网关接收所述第三方服务器反馈的所述第一云设备的在线状态。即云网关主动向第三方服务器查询云设备的在线状态。采用上述技术方案,解决了相关技术中只能依靠云设备主动上报在线状态至云网关,进而才能控制设备,进而导致的无法有效保障云网关侧保存的在线状态与云设备的真实在线状态一致的问题。进而云网关可以主动向第三方服务器询问超过预设阈值不在线的云设备在线状态,有效的保证了云网关侧保存的在线状态与云设备的真实在线状态一致。
[0099]
所述发送模块130,还用于获取云设备的离线时间戳和/或最后活跃时间戳,其中,所述离线时间戳用于指示所述云设备的离线时间,所述最后活跃时间戳用于指示所述云设备的最后活跃时间;根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态,其中,所述获取情况用于指示所述云网关是否接收到所述离线时间戳和/或最后活跃时间戳;在确定所述云设备的在线状态的维持时间超过预设阈值的情况下,云网关向第三方服务器发送查询信息。
[0100]
需要说明的是,所述离线时间戳和/或最后活跃时间戳的获取情况可以包括以下四种情况:离线时间戳和最后活跃时间戳都获取到;离线时间戳和最后活跃时间戳都未获取到;只获取到离线时间戳;只获取到最后活跃时间戳。
[0101]
基于上述四种情况,先确定所述云设备的在线状态。在确定所述云设备的在线状态后,比较所述云设备的在线状态的维持时间和预设阈值的大小,在确定所述云设备的在线状态的维持时间超过预设阈值的情况下,云网关向第三方服务器发送查询信息。
[0102]
可选地,可以设置预设阈值设为1小时,当所述云设备离线时间或在线时间超过1个小时的时候,云网关主动向第三方服务器发送查询信息。采用上述技术手段,避免了在云设备不上报在线状态到第三方云服务器,第三方云服务器无法将在线状态等数据发送给云网关的问题,从而达到了云网关主动询问第三方服务器,在云网关得到消息(包括在线状态)后,将消息同步到core(相当于上述实施例的消息同步组件)和appserver,之后用户便可以根据正确的在线状态控制成功。
[0103]
在实际操作中,根据所述离线时间戳和/或最后活跃时间戳的获取情况确定所述云设备的在线状态,可以通过以下方式实现:
[0104]
1)在所述云网关接收到所述离线时间戳和最后活跃时间戳的情况下,根据所述离线时间戳和所述最后活跃时间戳的时间大小确定所述云设备的在线状态,这种情况存在是因为云设备在正常情况下包括至少经过了一次设备上线和下线整个流程,因此这两个时间戳都存在。当两个时间戳都存在,则哪个时间戳的时间最大,云设备在线状态为哪个。比如离线时间戳是13整点,最后活跃时间戳是14整点,此时,最后活跃时间戳大于离线时间戳,
云设备在线状态是在线;
[0105]
2)在所述云网关仅接收到所述最后活跃时间戳的情况下,确定所述云设备的在线状态为在线,该情况存在是因为云设备只上线还没下线过;
[0106]
3)在所述云网关仅接收到所述离线时间戳的情况下,确定所述云设备的在线状态为离线,该情况存在是因为该云设备是云网关升级之前的注册的设备,设备中没有这两个时间戳,云网关不知道云设备的在线状态,需要去第三方服务器查询;
[0107]
4)在所述云网关未接收到所述离线时间戳和最后活跃时间戳的情况下,确定所述云设备的在线状态为离线,该情况存在是因为基于上述第三种情况,需要查询云设备的状态,如果第三方服务器返回云设备不在线,在云网关会保存离线时间戳,因此,只有离线时间戳。
[0108]
采用上述云设备的在线状态判断逻辑,就可以判断出所述云设备的在线状态。
[0109]
所述接收模块132,还用于获取云设备的离线的维持时间大于所述预设阈值的云设备的第一设备信息,并将所述第一设备信息加入到第一列表中;和/或获取所述第一设备信息中需要同步到消息传递组件的第二设备信息,并将所述第二设备信息加入到第二列表中。
[0110]
需要说明的是,第一列表可以用list1表示,第二列表可以用list2表示。获取云设备的离线的维持时间大于所述预设阈值的云设备的第一设备信息,将所述第一设备信息加入到list1中。比如,当预设阈值是1小时,且云设备的离线时间大于1小时,此时,将所述第一设备信息加入到list1中。在list1中的第一设备信息是云网关需要向第三方服务器主动询问的。当获取所述第一设备信息中需要同步到消息传递组件的第二设备信息时,将所述第二设备信息加入到list2中。list2中的第二设备信息是云网关需要同步到消息传递组件。通过上述技术手段,云网关就可以向第三方服务器主动查询云设备的在线状态,以及实现云网关与消息传递组件之间的消息同步。
[0111]
所述接收模块132,还用于判断所述云网关是否满足预设条件,其中,所述预设条件包括以下至少之一:所述云网关的定时任务执行的条件已满足,其中,所述定时任务用于在第三方服务器,所述云网关,消息传递组件之间同步云设备的在线状态;所述消息传递组件向所述云网关查询所述云设备的在线状态。
[0112]
需要说明的是,云网关的定时任务的执行周期是可以调整的。用synctimeinterval(相当于上述实施例的预设时间段)表示云网关同步到消息传递组件的时间间隔,用scanjobduration表示云网关定时任务周期。如果云网定时任务周期修改为5min,那么带来的问题是:所有在线的设备会5min一次同步到core,执行过于频繁。
[0113]
在本发明实施例中,在上述定时任务周期不大于3600s的情况下,无论云网关定时任务周期多少,对于在线的云设备,只同步最后活跃时间超过一小时的在线云设备到消息传递组件,并且每小时最多一次同步到消息传递组件。也就是说,在synctimeinterval是scanjobduration的整数倍,例如:synctimeinterval=60min,scanjobduration可取值为1、2、3、4、5、6、10、15、20、30、60min的情况下,无论云网关定时任务周期多少,对于在线的云设备,只同步最后活跃时间超过一小时的在线云设备到core,并且每小时最多一次同步到core。即能够调整云网关定时任务来解决不在线设备同步问题,而且不影响对在线设备的同步的周期。
[0114]
需要说明的是,云网关可以在云设备离线时间超过1小时的时候向第三服务器主动询问云设备在线状态,也可以在收到消息传递组件查询所述云设备的在线状态的时候,向第三服务器主动询问云设备在线状态。
[0115]
所述接收模块132,还用于所述云网关获取在线状态为在线的第二云设备,其中,所述第二云设备的在线的维持时间超过所述预设阈值;在预设时间段内,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件。
[0116]
需要说明的是,当所述第二云设备的在线的维持时间超过所述预设阈值时,所述云网关获取在线状态为在线的第二云设备。在所述云网关获取在线状态为在线的第二云设备之后,仅允许所述云网关将所述第二设备的在线状态同步一次到消息传递组件。实际上,云网关与消息传递组件的同步时间间隔是可以设置的。但是对于在线的云设备,只同步最后活跃时间超过一小时的在线云设备到消息传递组件,并且每小时最多一次同步到消息传递组件。即能够调整云网关定时任务来解决不在线设备同步问题,而且不影响对在线设备的同步的周期,所以一般情况下云网关每小时最多一次同步到消息传递组件。
[0117]
所述接收模块132,还用于通过以下方式确定所述预设时间段:获取系统的当前时间,所述最后活跃时间戳,以及目标时间戳;根据所述当前时间,所述最后活跃时间戳,以及目标时间戳确定所述预设时间段。
[0118]
例如,可以通过以下公式确定所述预设时间段:
[0119]
目标时间戳=(syscurrentts-onlinets)%synctimeinterval,其中,syscurrentts相当于系统的当前时间,onlinets相当于最后活跃时间戳,synctimeinterval相当于上述预设时间段,“%”用于表征取余操作。
[0120]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0121]
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0122]
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0123]
s1,用于向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;
[0124]
s2,用于接收所述第三方服务器反馈的所述第一云设备的在线状态。
[0125]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0126]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0127]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0128]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0129]
s1,用于向第三方服务器发送查询信息,其中,所述查询信息用于请求获取云设备状态时间超过预设阈值的第一云设备的在线状态,所述在线状态至少包括以下之一:在线,离线,所述云设备状态时间用于指示所述云设备在所述在线状态的维持时间;
[0130]
s2,用于接收所述第三方服务器反馈的所述第一云设备的在线状态。
[0131]
可选地,在本可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0132]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0133]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1