发送离线消息的方法及装置与流程

文档序号:12494745阅读:254来源:国知局
发送离线消息的方法及装置与流程

本发明涉及计算机技术领域,具体而言,本发明涉及一种发送离线消息的方法及一种发送离线消息的装置。



背景技术:

随着计算机技术的发展,各种终端设备已成为人们生活中必不可少的工具,各种功能强大的终端操作系统及终端应用程序不断涌现,为用户带来了更加便捷的体验。当前的信息交互频率不断增多,终端应用程序与服务端或其他终端的交互数据信息也日益增多。

在现有的信息传递架构下,当用户在终端应用程序中处于在线状态时,可以实时地接收到服务端或其他终端向其发送数据信息,当用户在终端应用程序中处于离线状态时,即终端应用程序未被启动运行,因此不能实时地接收到服务端或其他终端向其发送数据信息,随后在用户启动进入终端应用程序后,将获取应用程序在离线期间接收到的全部的离线数据。现有技术中,一般服务端将离线数据发送至终端后即会将离线数据进行删除,但是在离线数据量较大的情况下,一方面,在向终端发送离线数据的过程中往往会发生链接中断的情况,从而容易发生删除终端未接收到的离线数据的情况,导致离线数据的丢失;另一方面,在接收到离线数据获取请求后,若无法查找到相对应的某个离线数据时,将导致剩余的接收到离线数据获取请求对应的离线数据处于排队等待状态,无法及时将剩余的离线数据发送至终端应用程序。

因此,需要一种发送离线数据的方案,来解决现有技术中数据发送过程中离线数据丢失的情况以及发送离线数据的过程中容易产生堵塞的问题。



技术实现要素:

为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:

本发明的实施例提出了一种发送离线消息的方法,包括:

依据接收到的数据获取请求确定对应的多个离线数据;

将多个离线数据中的至少两个并行发送至对应的至少两个请求方;

接收请求方返回的针对任一离线数据的反馈信息;

依据反馈信息判断请求方是否已正确接收到任一离线数据;

依据判断结果针对任一离线数据执行相应的处理操作。

优选地,将多个离线数据中的至少两个并行发送至对应的至少两个请求方,包括:

将至少两个离线数据通过同一长连接并行发送至对应的至少两个请求方。

优选地,依据判断结果针对任一离线数据执行相应的处理操作,包括以下任一项:

若判断结果为任一离线数据被正确接收,删除任一离线数据;

若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方。

可选地,还包括:

依据预定的数据签名生成方式,对多个离线数据进行签名;

其中,将多个离线数据中的至少两个并行发送至请求方,包括:

将多个离线数据中的至少两个及各自相应的数据签名并行发送至请求方;

其中,请求方返回的反馈信息中包括接收方根据接收到的任一离线数据生成的待验证数据签名;

其中,依据反馈信息判断请求方是否已正确接收任一离线数据,包括:

比对反馈信息中的待验证数据签名与任一离线数据对应的数据签名是否一致来判断请求方是否已正确接收到任一离线数据。

可选地,还包括:

将多个离线数据存储至预定的缓存区域中,并将多个离线数据存储至预建立的数据库中;

其中,对多个离线数据进行签名的步骤之后,还包括:

将与多个离线数据对应的数据签名存储至预定的缓存区域中;

其中,依据反馈信息判断请求方是否已接收到正确的任一离线数据的步骤之前,包括:

从缓存区域中提取反馈信息对应的离线数据的数据签名。

优选地,若判断结果为任一离线数据被正确接收,删除任一离线数据,包括:

若判断结果为任一离线数据被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息,并删除预建立的数据库中任一离线数据的数据记录。

优选地,若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方,包括:

若判断结果为任一离线数据未被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息;

在预建立的数据库中重新获取任一离线数据的数据记录,并存储至预定的缓存区域;

将重新获取到的任一离线数据发送至请求方。

可选地,方法还包括:

依据预定的数据签名生成方式,对重新发送的任一离线数据进行签名;

将与任一离线数据对应的数据签名存储至预定的缓存区域中。

本发明的另一实施例提出了一种发送离线消息的装置,包括:

确定模块,用于依据接收到的数据获取请求确定对应的多个离线数据;

发送模块,用于将多个离线数据中的至少两个并行发送至对应的至少两个请求方;

接收模块,用于接收请求方返回的针对任一离线数据的反馈信息;

判断模块,用于依据反馈信息判断请求方是否已正确接收到任一离线数据;

执行模块,用于依据判断结果针对任一离线数据执行相应的处理操作。

优选地,发送模块,包括:

第一发送单元,用于将至少两个离线数据通过同一长连接并行发送至对应的至少两个请求方。

优选地,执行模块,包括以下任一项:

若判断结果为任一离线数据被正确接收,删除任一离线数据;

若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方。

可选地,还包括:

第一签名模块,用于依据预定的数据签名生成方式,对多个离线数据进行签名;

其中,发送模块用于将多个离线数据中的至少两个及各自相应的数据签名并行发送至请求方;

其中,请求方返回的反馈信息中包括接收方根据接收到的任一离线数据生成的待验证数据签名;

其中,判断模块用于比对反馈信息中的待验证数据签名与任一离线数据对应的数据签名是否一致来判断请求方是否已正确接收到任一离线数据。

可选地,还包括:

第一存储模块,用于将多个离线数据存储至预定的缓存区域中,并将多个离线数据存储至预建立的数据库中;

其中,对多个离线数据进行签名之后,还包括:

第二存储模块,用于将与多个离线数据对应的数据签名存储至预定的缓存区域中;

其中,依据反馈信息判断请求方是否已接收到正确的任一离线数据之前,包括:

提取模块,用于从缓存区域中提取反馈信息对应的离线数据的数据签名。

优选地,若判断结果为任一离线数据被正确接收,删除任一离线数据,执行模块包括:

第一删除单元,用于若判断结果为任一离线数据被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息,并删除预建立的数据库中任一离线数据的数据记录。

优选地,若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方,执行模块包括:

第二删除单元,用于若判断结果为任一离线数据未被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息;

获取单元,用于在预建立的数据库中重新获取任一离线数据的数据记录,并存储至预定的缓存区域;

第二发送单元,用于将重新获取到的任一离线数据发送至请求方。

可选地,还包括:

第二签名模块,用于依据预定的数据签名生成方式,对重新发送的任一离线数据进行签名;

第三存储模块,用于将与任一离线数据对应的数据签名存储至预定的缓存区域中。

本发明的实施例中,提出了一种发送离线消息的方案,依据接收到的数据获取请求确定对应的多个离线数据;将多个离线数据中的至少两个并行发送至对应的至少两个请求方,实现了同时将离线数据及时地发送至各请求方,避免了各请求方同时请求获取离线数据时可能会产生的其中至少一个请求方延迟接收离线数据的情况;接收请求方返回的针对任一离线数据的反馈信息,依据反馈信息判断请求方是否已正确接收到任一离线数据,实现了准确地判断请求方是否正确接收到任一离线数据,为后续针对任一离线数据执行相应的处理操作提供了必要的前提保障;依据判断结果针对任一离线数据执行相应的处理操作,实现了根据不同的判断结果,对任一离线数据执行不同的处理操作,避免了请求方在未接收到正确离线数据的情况下将离线数据进行删除,而导致离线数据丢失的情况,进一步地,保证了请求方能够接收到正确的离线数据。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明中一个实施例的发送离线消息的方法的流程示意图;

图2为本发明中另一实施例的发送离线消息的装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

图1为本发明中一个实施例的发送离线消息的方法的流程示意图。

本发明的实施例中,各步骤所执行的内容概述如下:步骤S110:依据接收到的数据获取请求确定对应的多个离线数据;步骤S120:将多个离线数据中的至少两个并行发送至对应的至少两个请求方;步骤S130:接收请求方返回的针对任一离线数据的反馈信息;步骤S140:依据反馈信息判断请求方是否已正确接收到任一离线数据;步骤S150:依据判断结果针对任一离线数据执行相应的处理操作。

本发明的实施例中,提出了一种发送离线消息的方法,依据接收到的数据获取请求确定对应的多个离线数据;将多个离线数据中的至少两个并行发送至对应的至少两个请求方,实现了同时将离线数据及时地发送至各请求方,避免了各请求方同时请求获取离线数据时可能会产生的其中至少一个请求方延迟接收离线数据的情况;接收请求方返回的针对任一离线数据的反馈信息,依据反馈信息判断请求方是否已正确接收到任一离线数据,实现了准确地判断请求方是否正确接收到任一离线数据,为后续针对任一离线数据执行相应的处理操作提供了必要的前提保障;依据判断结果针对任一离线数据执行相应的处理操作,实现了根据不同的判断结果,对任一离线数据执行不同的处理操作,避免了请求方在未接收到正确离线数据的情况下将离线数据进行删除,而导致离线数据丢失的情况,进一步地,保证了请求方能够接收到正确的离线数据。以下针对各个步骤的具体实现做进一步的说明:

步骤S110:依据接收到的数据获取请求确定对应的多个离线数据。

具体地,依据接收到的至少两个请求方发送的针对离线数据的数据获取请求,确定对应的多个离线数据。

例如,在终端设备A与终端设备B、终端设备A与终端设备C的数据传输过程中,若终端设备B和终端设备C从离线状态变更为在线状态后,终端设备B和终端设备C向终端设备A发送离线数据的数据获取请求,终端设备A依据接收到的数据获取请求确定终端设备B在离线期间对应的离线数据为Data1,并确定终端设备C在离线期间对应的离线数据为Data2。

步骤S120:将多个离线数据中的至少两个并行发送至对应的至少两个请求方。

例如,接上例,终端设备A将离线数据Data1和Data2分别并行发送至终端设备B和终端设备C。

步骤S130:接收请求方返回的针对任一离线数据的反馈信息。

例如,终端设备A接收终端设备B返回的针对离线数据Data1的反馈信息和终端设备C返回的针对离线数据Data2的反馈信息。

步骤S140:依据反馈信息判断请求方是否已正确接收到任一离线数据。

例如,依据终端设备B返回的针对离线数据Data1的反馈信息,如“已接收到离线数据Data1”,终端设备A可判断判断终端设备B已正确接收到离线数据Data1;依据终端设备C返回的针对离线数据Data2的反馈信息,如“已接收到离线数据Data2”,终端设备A可判断判断终端设备C已正确接收到离线数据Data2。

需要说明的是,本领域技术人员可以了解到,发送反馈消息的方式还可以通过发送ACK(Acknowledgement,确认字符)包的形式进行消息反馈,本发明实施例中,会以特定形式的反馈消息为例说明,但并不对此进行限制。

步骤S150:依据判断结果针对任一离线数据执行相应的处理操作。

例如,根据终端设备B已正确接收到离线数据Data1的判断结果,终端设备A对存储的离线数据Data1执行删除操作;根据终端设备C已正确接收到离线数据Data2的判断结果,终端设备A对存储的离线数据Data2执行删除操作。

优选地,步骤S120中将多个离线数据中的至少两个并行发送至对应的至少两个请求方的步骤进一步包括步骤S121;步骤S121:将至少两个离线数据通过同一长连接并行发送至对应的至少两个请求方。

例如,在终端设备A通过同一长连接分别与终端设备B和终端设备C进行数据传输,当终端设备A确定终端设备B在离线期间对应的离线数据为Data1,并确定终端设备C在离线期间对应的离线数据为Data2,随后终端设备A通过该同一长连接,将离线数据Data1和Data2分别并行发送至终端设备B和终端设备C。

需要说明的是,本领域技术人员可以了解到,长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送时需要双方发链路检测包。长连接使得在一个TCP连接的基础之上,可以发送多个HTTP请求以及接收多个HTTP响应,从而避免每一次请求都去打开一个新的连接。通过使用长连接,可以减少CPU(Central Processing Unit,中央处理器)及内存的使用、减少网络的堵塞、减少请求的响应时间以及当发生错误时,可以在不关闭连接的情况下进行提示等。因此,长连接被广泛的应用于向终端设备推送各种服务和消息。

优选地,步骤S150依据判断结果针对任一离线数据执行相应的处理操作,包括以下任一情形:

1)若判断结果为任一离线数据被正确接收,删除任一离线数据。例如,根据判断结果为离线数据Data1的已被终端设备B正确接收,终端设备A对存储的离线数据Data1执行删除操作。

2)若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方。例如,根据判断结果为离线数据Data1的未被终端设备B正确接收,终端设备A将存储的离线数据Data1重新发送至终端设备B。

通过本实施例,能够准确删除无用的离线数据,增加离线数据存储区域的存储空间,提高离线数据存储区域的数据存储效率,同时避免了请求方在未接收到正确离线数据的情况下将离线数据进行删除,而导致离线数据丢失的情况,进一步地,能够避免因大量冗余离线数据造成离线数据存储区域存储崩溃的情况发生。

优选地,该方法还包括步骤S160;步骤S160:依据预定的数据签名生成方式,对多个离线数据进行签名。

例如,在终端设备A通过同一长连接分别与终端设备B和终端设备C进行数据传输,当终端设备A确定终端设备B在离线期间对应的离线数据为Data1,并确定终端设备C在离线期间对应的离线数据为Data2,终端设备A依据预定的数据签名生成方式,如计算MD5(Message Digest Algorithm MD5,消息摘要算法第五版)的值的数据签名方式,分别对离线数据为Data1和Data2进行MD5计算,若离线数据Data1的数据内容为“hello”,进行MD5计算签名后的值如“bc4b2a76b9719d91”,若离线数据Data2的数据内容为“world”,进行MD5计算签名后的值如“a0760186574b0282”。

需要说明的是,本领域技术人员可以了解到,数据签名的方式有多种,本发明实施例中会对离线数据以特定的数据签名方式为例说明,但并不对此进行限制;且发送数据列表的存储方式,可以为数据表的方式,也可以为链表方式,本发明实施例中会以特定的发送数据列表的方式为例说明,但并不对此进行限制。

其中,步骤S120将多个离线数据中的至少两个并行发送至请求方进一步包括步骤S121;步骤S121:将多个离线数据中的至少两个及各自相应的数据签名并行发送至请求方。

例如,接上例,终端设备A将离线数据Data1的数据内容“hello”及Data1的MD5数据签名“bc4b2a76b9719d91”发送至终端设备B,同时并行将离线数据Data2的数据内容“world”及Data2的MD5数据签名“a0760186574b0282”发送至终端设备C。

其中,请求方返回的反馈信息中包括接收方根据接收到的任一离线数据生成的待验证数据签名。例如,终端设备B向终端设备A返回的反馈信息中包括终端设备B根据接收到的离线数据Data1生成的待验证数据签名“bc4b2a76b9719d91”;终端设备C向终端设备A返回的反馈信息中包括终端设备C根据接收到的离线数据Data2生成的待验证数据签名“a0760186574b0282”。

其中,步骤S140依据反馈信息判断请求方是否已正确接收任一离线数据进一步包括步骤S141;步骤S141:比对反馈信息中的待验证数据签名与任一离线数据对应的数据签名是否一致来判断请求方是否已正确接收到任一离线数据。

例如,比对得到终端设备B的反馈信息中的待验证数据签名“bc4b2a76b9719d91”与离线数据Data1对应的MD5数据签名“bc4b2a76b9719d91”一致,判断终端设备B已正确接收到离线数据Data1;比对得到终端设备C的反馈信息中的待验证数据签名“a0760186574b0282”与离线数据Data2对应的MD5数据签名“a0760186574b0282”一致,判断终端设备C已正确接收到离线数据Data2。

通过本实施例,可快速判断请求方是否已正确接收到任一离线数据,从而保证了离线数据能够及时且准确地发送至请求方。

优选地,该方法还包括步骤S170;步骤S170:将多个离线数据存储至预定的缓存区域中,并将多个离线数据存储至预建立的数据库中。

例如,终端设备A将离线数据Data1和Data2存储至预定的缓存区域中,如缓存数据库CacheDB,并将离线数据Data1和Data2存储至预建立的数据库中,如磁盘数据库DB。

其中,步骤S160中对多个离线数据进行签名的步骤之后还包括步骤S180;步骤S180:将与多个离线数据对应的数据签名存储至预定的缓存区域中。

例如,终端设备A将离线数据Data1的数据内容“hello”及Data1的MD5数据签名“bc4b2a76b9719d91”存储至缓存数据库CacheDB,并将离线数据Data2的数据内容“world”及Data2的MD5数据签名“a0760186574b0282”存储至缓存数据库CacheDB。

其中,步骤S140依据反馈信息判断请求方是否已接收到正确的任一离线数据的步骤之前包括步骤S190;步骤S190:从缓存区域中提取反馈信息对应的离线数据的数据签名。

例如,终端设备B向终端设备A返回的反馈信息中包括终端设备B根据接收到的离线数据Data1生成的待验证数据签名“bc4b2a76b9719d91”,则从缓存数据库CacheDB中提取到该反馈信息对应的离线数据Data1的数据签名,为“bc4b2a76b9719d91”。

优选地,步骤S150中若判断结果为任一离线数据被正确接收,删除任一离线数据,进一步包括步骤S151;步骤S151:若判断结果为任一离线数据被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息,并删除预建立的数据库中任一离线数据的数据记录。

例如,比对得到终端设备B的反馈信息中的待验证数据签名“bc4b2a76b9719d91”与从缓存数据库CacheDB中提取离线数据Data1对应的数据签名“bc4b2a76b9719d91”一致,判断终端设备B已正确接收到离线数据Data1,根据判断结果为离线数据Data1被正确接收,删除缓存数据库CacheDB中存储的离线数据Data1及相应的数据签名“bc4b2a76b9719d91”,并删除磁盘数据库DB中离线数据Data1的数据记录。

优选地,步骤S150中若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方,进一步包括步骤S152、步骤S153和步骤S154;步骤S152:若判断结果为任一离线数据未被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息;步骤S153:在预建立的数据库中重新获取任一离线数据的数据记录,并存储至预定的缓存区域;步骤S154:将重新获取到的任一离线数据发送至请求方。

例如,若终端设备C向终端设备A返回的反馈信息中包括终端设备C根据接收到的离线数据Data2生成的待验证数据签名为“a0760186574b0283”,从缓存数据库CacheDB中提取该反馈信息对应的离线数据Data2的数据签名,为“a0760186574b0282”,比对得到终端设备C的反馈信息中的待验证数据签名“a0760186574b0283”与从缓存数据库CacheDB中提取离线数据Data2对应的数据签名“a0760186574b0282”不一致,判断终端设备C未正确接收到离线数据Data2,根据判断结果为离线数据Data2未被正确接收,删除缓存数据库CacheDB中离线数据Data2及相应的数据签名“a0760186574b0282”;随后在磁盘数据库DB中重新获取离线数据Data2的数据记录,并存储至缓存数据库CacheDB,并将重新获取到的离线数据Data2发送至终端设备C。

优选地,步骤S154进一步包括步骤S1541和步骤S1542;步骤S1541:依据预定的数据签名生成方式,对重新发送的任一离线数据进行签名;步骤S1542:将与任一离线数据对应的数据签名存储至预定的缓存区域中。

例如,接上例,依据预定计算MD5值的数据签名方式,对重新获取到的离线数据Data2进行签名,离线数据Data2的数据内容为“world”得到的数据签名为“a0760186574b0282”,随后,将与离线数据Data2对应的数据签名“a0760186574b0282”存储至缓存数据库CacheDB中与离线数据Data2对应的存储位置。

通过本实施例,当多个链接同时写同一长连接时,能够保证数据的完整性,使得请求方无法获取到非完整的数据,保证了请求方获取到准确的离线数据。

图2为本发明中另一实施例的发送离线消息的装置的结构示意图。

本发明的实施例中,各模块所执行的内容概述如下:确定模块210依据接收到的数据获取请求确定对应的多个离线数据;发送模块220将多个离线数据中的至少两个并行发送至对应的至少两个请求方;接收模块230接收请求方返回的针对任一离线数据的反馈信息;判断模块240依据反馈信息判断请求方是否已正确接收到任一离线数据;执行模块250依据判断结果针对任一离线数据执行相应的处理操作。

本发明的实施例中,提出了一种发送离线消息的装置,依据接收到的数据获取请求确定对应的多个离线数据;将多个离线数据中的至少两个并行发送至对应的至少两个请求方,实现了同时将离线数据及时地发送至各请求方,避免了各请求方同时请求获取离线数据时可能会产生的其中至少一个请求方延迟接收离线数据的情况;接收请求方返回的针对任一离线数据的反馈信息,依据反馈信息判断请求方是否已正确接收到任一离线数据,实现了准确地判断请求方是否正确接收到任一离线数据,为后续针对任一离线数据执行相应的处理操作提供了必要的前提保障;依据判断结果针对任一离线数据执行相应的处理操作,实现了根据不同的判断结果,对任一离线数据执行不同的处理操作,避免了请求方在未接收到正确离线数据的情况下将离线数据进行删除,而导致离线数据丢失的情况,进一步地,保证了请求方能够接收到正确的离线数据。以下针对各个模块的具体实现做进一步的说明:

确定模块210用于依据接收到的数据获取请求确定对应的多个离线数据。

具体地,依据接收到的至少两个请求方发送的针对离线数据的数据获取请求,确定对应的多个离线数据。

例如,在终端设备A与终端设备B、终端设备A与终端设备C的数据传输过程中,若终端设备B和终端设备C从离线状态变更为在线状态后,终端设备B和终端设备C向终端设备A发送离线数据的数据获取请求,终端设备A依据接收到的数据获取请求确定终端设备B在离线期间对应的离线数据为Data1,并确定终端设备C在离线期间对应的离线数据为Data2。

发送模块220用于将多个离线数据中的至少两个并行发送至对应的至少两个请求方。

例如,接上例,终端设备A将离线数据Data1和Data2分别并行发送至终端设备B和终端设备C。

接收模块230用于接收请求方返回的针对任一离线数据的反馈信息。

例如,终端设备A接收终端设备B返回的针对离线数据Data1的反馈信息和终端设备C返回的针对离线数据Data2的反馈信息。

判断模块240用于依据反馈信息判断请求方是否已正确接收到任一离线数据。

例如,依据终端设备B返回的针对离线数据Data1的反馈信息,如“已接收到离线数据Data1”,终端设备A可判断判断终端设备B已正确接收到离线数据Data1;依据终端设备C返回的针对离线数据Data2的反馈信息,如“已接收到离线数据Data2”,终端设备A可判断判断终端设备C已正确接收到离线数据Data2。

需要说明的是,本领域技术人员可以了解到,发送反馈消息的方式还可以通过发送ACK(Acknowledgement,确认字符)包的形式进行消息反馈,本发明实施例中,会以特定形式的反馈消息为例说明,但并不对此进行限制。

执行模块250用于依据判断结果针对任一离线数据执行相应的处理操作。

例如,根据终端设备B已正确接收到离线数据Data1的判断结果,终端设备A对存储的离线数据Data1执行删除操作;根据终端设备C已正确接收到离线数据Data2的判断结果,终端设备A对存储的离线数据Data2执行删除操作。

优选地,发送模块220进一步包括第一发送单元;第一发送单元用于将至少两个离线数据通过同一长连接并行发送至对应的至少两个请求方。

例如,在终端设备A通过同一长连接分别与终端设备B和终端设备C进行数据传输,当终端设备A确定终端设备B在离线期间对应的离线数据为Data1,并确定终端设备C在离线期间对应的离线数据为Data2,随后终端设备A通过该同一长连接,将离线数据Data1和Data2分别并行发送至终端设备B和终端设备C。

需要说明的是,本领域技术人员可以了解到,长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送时需要双方发链路检测包。长连接使得在一个TCP连接的基础之上,可以发送多个HTTP请求以及接收多个HTTP响应,从而避免每一次请求都去打开一个新的连接。通过使用长连接,可以减少CPU(Central Processing Unit,中央处理器)及内存的使用、减少网络的堵塞、减少请求的响应时间以及当发生错误时,可以在不关闭连接的情况下进行提示等。因此,长连接被广泛的应用于向终端设备推送各种服务和消息。

优选地,执行模块250依据判断结果针对任一离线数据执行相应的处理操作,包括以下任一情形:

1)若判断结果为任一离线数据被正确接收,删除任一离线数据。例如,根据判断结果为离线数据Data1的已被终端设备B正确接收,终端设备A对存储的离线数据Data1执行删除操作。

2)若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方。例如,根据判断结果为离线数据Data1的未被终端设备B正确接收,终端设备A将存储的离线数据Data1重新发送至终端设备B。

通过本实施例,能够准确删除无用的离线数据,增加离线数据存储区域的存储空间,提高离线数据存储区域的数据存储效率,同时避免了请求方在未接收到正确离线数据的情况下将离线数据进行删除,而导致离线数据丢失的情况,进一步地,能够避免因大量冗余离线数据造成离线数据存储区域存储崩溃的情况发生。

优选地,该装置还包括第一签名模块;第一签名模块依据预定的数据签名生成方式,对多个离线数据进行签名。

例如,在终端设备A通过同一长连接分别与终端设备B和终端设备C进行数据传输,当终端设备A确定终端设备B在离线期间对应的离线数据为Data1,并确定终端设备C在离线期间对应的离线数据为Data2,终端设备A依据预定的数据签名生成方式,如计算MD5(Message Digest Algorithm MD5,消息摘要算法第五版)的值的数据签名方式,分别对离线数据为Data1和Data2进行MD5计算,若离线数据Data1的数据内容为“hello”,进行MD5计算签名后的值如“bc4b2a76b9719d91”,若离线数据Data2的数据内容为“world”,进行MD5计算签名后的值如“a0760186574b0282”。

需要说明的是,本领域技术人员可以了解到,数据签名的方式有多种,本发明实施例中会对离线数据以特定的数据签名方式为例说明,但并不对此进行限制;且发送数据列表的存储方式,可以为数据表的方式,也可以为链表方式,本发明实施例中会以特定的发送数据列表的方式为例说明,但并不对此进行限制。

其中,发送模块220用于将多个离线数据中的至少两个及各自相应的数据签名并行发送至请求方。

例如,接上例,终端设备A将离线数据Data1的数据内容“hello”及Data1的MD5数据签名“bc4b2a76b9719d91”发送至终端设备B,同时并行将离线数据Data2的数据内容“world”及Data2的MD5数据签名“a0760186574b0282”发送至终端设备C。

其中,请求方返回的反馈信息中包括接收方根据接收到的任一离线数据生成的待验证数据签名。例如,终端设备B向终端设备A返回的反馈信息中包括终端设备B根据接收到的离线数据Data1生成的待验证数据签名“bc4b2a76b9719d91”;终端设备C向终端设备A返回的反馈信息中包括终端设备C根据接收到的离线数据Data2生成的待验证数据签名“a0760186574b0282”。

其中,判断模块240用于比对反馈信息中的待验证数据签名与任一离线数据对应的数据签名是否一致来判断请求方是否已正确接收到任一离线数据。

例如,比对得到终端设备B的反馈信息中的待验证数据签名“bc4b2a76b9719d91”与离线数据Data1对应的MD5数据签名“bc4b2a76b9719d91”一致,判断终端设备B已正确接收到离线数据Data1;比对得到终端设备C的反馈信息中的待验证数据签名“a0760186574b0282”与离线数据Data2对应的MD5数据签名“a0760186574b0282”一致,判断终端设备C已正确接收到离线数据Data2。

通过本实施例,可快速判断请求方是否已正确接收到任一离线数据,从而保证了离线数据能够及时且准确地发送至请求方。

优选地,该装置还包括第一存储模块;第一存储模块用于将多个离线数据存储至预定的缓存区域中,并将多个离线数据存储至预建立的数据库中。

例如,终端设备A将离线数据Data1和Data2存储至预定的缓存区域中,如缓存数据库CacheDB,并将离线数据Data1和Data2存储至预建立的数据库中,如磁盘数据库DB。

其中,对多个离线数据进行签名之后还包括第二存储模块;第二存储模块用于将与多个离线数据对应的数据签名存储至预定的缓存区域中。

例如,终端设备A将离线数据Data1的数据内容“hello”及Data1的MD5数据签名“bc4b2a76b9719d91”存储至缓存数据库CacheDB,并将离线数据Data2的数据内容“world”及Data2的MD5数据签名“a0760186574b0282”存储至缓存数据库CacheDB。

其中,依据反馈信息判断请求方是否已接收到正确的任一离线数据之前包括提取模块;提取模块用于从缓存区域中提取反馈信息对应的离线数据的数据签名。

例如,终端设备B向终端设备A返回的反馈信息中包括终端设备B根据接收到的离线数据Data1生成的待验证数据签名“bc4b2a76b9719d91”,则从缓存数据库CacheDB中提取到该反馈信息对应的离线数据Data1的数据签名,为“bc4b2a76b9719d91”。

优选地,若判断结果为任一离线数据被正确接收,删除任一离线数据,执行模块250进一步包括第一删除单元;第一删除单元用于若判断结果为任一离线数据被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息,并删除预建立的数据库中任一离线数据的数据记录。

例如,比对得到终端设备B的反馈信息中的待验证数据签名“bc4b2a76b9719d91”与从缓存数据库CacheDB中提取离线数据Data1对应的数据签名“bc4b2a76b9719d91”一致,判断终端设备B已正确接收到离线数据Data1,根据判断结果为离线数据Data1被正确接收,删除缓存数据库CacheDB中存储的离线数据Data1及相应的数据签名“bc4b2a76b9719d91”,并删除磁盘数据库DB中离线数据Data1的数据记录。

优选地,若判断结果为任一离线数据未被正确接收,重新将任一离线数据发送至请求方,执行模块250进一步包括第二删除单元、获取单元和第二发送单元;第二删除单元用于若判断结果为任一离线数据未被正确接收,删除预定的缓存区域中任一离线数据及相应的数据签名的数据信息;获取单元用于在预建立的数据库中重新获取任一离线数据的数据记录,并存储至预定的缓存区域;第二发送单元用于将重新获取到的任一离线数据发送至请求方。

例如,若终端设备C向终端设备A返回的反馈信息中包括终端设备C根据接收到的离线数据Data2生成的待验证数据签名为“a0760186574b0283”,从缓存数据库CacheDB中提取该反馈信息对应的离线数据Data2的数据签名,为“a0760186574b0282”,比对得到终端设备C的反馈信息中的待验证数据签名“a0760186574b0283”与从缓存数据库CacheDB中提取离线数据Data2对应的数据签名“a0760186574b0282”不一致,判断终端设备C未正确接收到离线数据Data2,根据判断结果为离线数据Data2未被正确接收,删除缓存数据库CacheDB中离线数据Data2及相应的数据签名“a0760186574b0282”;随后在磁盘数据库DB中重新获取离线数据Data2的数据记录,并存储至缓存数据库CacheDB,并将重新获取到的离线数据Data2发送至终端设备C。

优选地,该装置还包括第二签名模块和第三存储模块;第二签名模块用于依据预定的数据签名生成方式,对重新发送的任一离线数据进行签名;第三存储模块用于将与任一离线数据对应的数据签名存储至预定的缓存区域中。

例如,接上例,依据预定计算MD5值的数据签名方式,对重新获取到的离线数据Data2进行签名,离线数据Data2的数据内容为“world”得到的数据签名为“a0760186574b0282”,随后,将与离线数据Data2对应的数据签名“a0760186574b0282”存储至缓存数据库CacheDB中与离线数据Data2对应的存储位置。

通过本实施例,当多个链接同时写同一长连接时,能够保证数据的完整性,使得请求方无法获取到非完整的数据,保证了请求方获取到准确的离线数据。

本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1