具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的多事件同步处理方法,该多事件同步处理方法可应用如图1所示的应用环境中。具体地,该多事件同步处理方法应用在多事件同步处理系统中,该多事件同步处理系统包括如图1所示的客户端和服务器,客户端与服务器通过网络进行通信,用于实现将同一所述事件类型对应的所有所述待同步事件进行合并处理,同时示所述目标事件集合,提高客户端事件处理效率,可以优化用户刷新体验,为用户提供高质量服务,实现多个不同的客户端信息和事件同步,便于用户即时了解信息。其中,客户端又称为用户端,是指与服务器相对应,为客户提供本地服务的程序。客户端可安装在但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备上。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种多事件同步处理方法,以该方法应用在图1中的客户端为例进行说明,包括如下步骤:
S201:向服务器发送事件同步请求,事件同步请求包括用户ID。
其中,事件同步请求是指客户端向服务器发送的,客户端需要进行事件同步的请求。事件包括目标场景下产生的事件和与该事件相关的事件信息。目标场景是指与用户ID具有关联的场景,例如,目标场景可以是用户ID的请求加好友的场景;用户ID加入群组的场景或者群成员变更的场景等。事件信息是目标场景下产生的信息,例如,当目标场景是群成员变更,事件即为群成员变更,事件信息便可包括群成员名称等。本实施例中,客户端向服务器发送事件同步请求,因此可以对用户ID所有操作产生的事件和相关消息进行同步,保证用户当前登录的设备可以全面且同时地同步其他设备的事件,现有技术的通常常常仅涉及消息的同步,无法进行全面同步,导致用户无法进行即时沟通。例如,当用户在新的设备登录时,原有的群组事件是无法同步更新的。
用户ID是用于唯一识别用户的标识,本实施例中,用户ID是便于服务器查到该用户ID对应的信息。例如,用户ID可以是用户手机号码等。
本实施例中,客户端通过http请求向服务器发送事件同步请求,以实现自动拉取用户ID所对应的所有事件,保证可以将用户ID对应的所有信息同时拉取到客户端中,便于后续对所有事件进行同步处理。具体地,可以是客户端自动触发向服务器发送事件同步请求,也可以是用户通过客户端向服务器发送的事件同步请求,以实现多个不同的事件信息和事件同步,便于用户即时了解信息。
S202:接收服务器发送的用户ID对应的后台事件列表。
其中,后台事件列表是用于记录用户ID所有操作产生的事件和相关消息,并存储在服务器中的列表。作为一示例,当用户在原有设备登录,用户ID对应的所有操作产生的事件和相关消息都会发送到服务器中。具体地,用户ID对应的所有操作产生的事件会生成事件对应的事件ID和事件类型,将用户ID、事件、事件ID和事件类型同时发送给服务器,以便服务器将用户ID、事件、事件ID和事件类型关联存储在后台事件列表中,为后续的不同设备的事件更新提供技术支持。当服务器接收到事件同步请求,则根据事件同步请求的用户ID,得到用户ID对应的后台事件列表,并将该后台事件列表发送给对应的客户端。其中,事件ID是用于唯一识别事件的ID,例如,该事件ID可以是事件1等。事件类型是指事件对应的类型,例如,事件类型可以是加好友类型或者同一个群组的事件作为一个事件类型。原有设备是指已经登录过的设备。
可以理解地,为避免消息冗余,后台事件列表中记录用户ID对应的所有事件,以及每一事件在预设存储时间内的相关消息,例如,可以是在系统当前时间之前1周内的相关消息,既保证客户端可以同步更新,相关消息具有时效性;也可以减轻客户端同步压力。其中,预设存储时间是预先设置的存储时间。
S203:将本地数据库中存储的本地事件列表与后台事件列表进行对比,获取待同步事件。
其中,本地事件列表是指记录在客户端的本地数据库的用户ID对应的所有操作所产生的事件。待同步事件是用户ID使用的客户端需要进行同步的事件。
本实施例中,将本地事件列表包括事件ID,后台事件列表包括事件ID,将本地事件列表的事件ID与后台事件列表的事件ID进行对比,以确定客户端还未更新的事件,为后续客户端对待同步事件同时进行更新提供技术支持。例如,本地事件列表的事件ID包括事件1和事件2;后台事件列表的事件ID包括事件1、事件2和事件3,则将事件3确定为待同步事件。
S204:对待同步事件进行分析,确定待同步事件对应的事件类型。
具体地,每一待同步事件包括事件类型和事件ID,将所有待同步事件进行分析,得到每一待同步事件的事件类型,为后续的将同一事件类型的待同步事件合并提供技术支持。
S205:将同一事件类型对应的所有待同步事件进行合并处理,获取目标事件集合,显示目标事件集合。
其中,目标事件集合是将待同步事件划分到不同事件类型形成的结合。本实施例中,对属于同一事件类型的所有待同步事件同时进行合并处理,以便客户端对同一事件类型的所有待同步事件进行操作,可缩短进行同步的待同步事件的处理时间,提高客户端事件处理效率,且在用户新登录的客户端或者离线转登录状态时,同时显示目标事件集合中的待处理,可以优化用户刷新体验,为用户提供高质量服务,实现多个不同的客户端信息和事件同步,便于用户即时了解信息。
本实施例所提供的多事件同步处理方法,向服务器发送事件同步请求,实现自动拉取用户ID所对应的所有事件,保证可以将用户ID对应的所有信息同时拉取到客户端中,便于后续对所有事件进行同步处理。接收服务器发送的用户ID对应的后台事件列表,为后续的不同设备的事件更新提供技术支持。将本地数据库中存储的本地事件列表与后台事件列表进行对比,获取待同步事件,为后续客户端对待同步事件同时进行更新提供技术支持。对待同步事件进行分析,确定待同步事件对应的事件类型,为后续的事件合并提供技术支持。将同一事件类型对应的所有待同步事件进行合并处理,获取目标事件集合,显示目标事件集合,提高客户端事件处理效率,可以优化用户刷新体验,为用户提供高质量服务,实现多个不同的客户端信息和事件同步,便于用户即时了解信息。
在一实施例中,如图3所示,步骤S201,即向服务器发送事件同步请求,包括:
S301:检测客户端的当前状态,在当前状态变更时,启动心跳机制。
其中,当前状态是客户端当前所处的状态。心跳机制是用于实现客户端与服务器保持长连接或者短长连接的机制,以使客户端与服务器保持连接,避免由于网络问题导致无法及时同步。
本实施例中,在当前状态变更具体是指客户端由离线状态转化为在线状态或者在新的客户端上登录时,则启动心跳机制,客户端向服务器发送的固定信息,若服务器长时间没有回复,则客户端重新与服务器创建连接,确保服务器与客户端保持连接,避免因为网络问题导致事件无法及时同步。其中,固定信息是用于确定服务器和客户端是否保持连接的消息。
S302:基于心跳机制,触发向服务器发送事件同步请求。
本实施例中,通过心跳机制,保证客户端与服务器可正常通信,然后,在心跳机制内,客户端自动触发事件同步请求,向服务器发送该事件同步请求,以便后续进行事件同步。
本实施例所提供的多事件同步处理方法,检测客户端的当前状态,在当前状态变更时,启动心跳机制,确保服务器与客户端保持连接,避免因为网络问题导致事件无法及时同步。基于心跳机制,触发向服务器发送事件同步请求,以便后续进行事件同步。
在一实施例中,后台事件列表包括至少一个事件列表分页。如图4所示,步骤S202,即接收服务器发送的用户ID对应的后台事件列表,包括:
S401:接收服务器异步发送的用户ID对应的每一事件列表分页,获取每一事件列表分页的发送时长。
其中,事件列表分页按照一定的规则将客户端发送的事件存储在不同页的列表的结果,例如,可以按照时间对客户端发送的事件进行分页,即将一天内形成的事件或者一周内形成的事件存储在同一事件分页内;或者,可以按照存储容量大小进行分页,例如,以5kb的容量大小进行事件分页。
发送时长是指从客户端发送的事件同步请求到接收到事件列表分页所经过的时长。
S402:判断每一事件列表分页的发送时长是否在预设超期时长内。
其中,预设超期时长是指预先设定的时长,例如,预设超期时长可以是20秒。
本实施例中,判断每一事件列表分页的发送时长是否在预设超期时长内,保证仅对预设超期时长内的事件列表分页进行处理,而当出现超出预设超期时长内的事件列表分页需要删除已经接收的所有事件列表分页,保证后续客户端可以实现同时同步。
S403:若每一事件列表分页的发送时长在预设超期时长内,则检测事件列表分页中是否包括结束标识。
其中,结束标识是指用户ID所有操作所产生的所有待处理事件已经全部发送客户端的标识,通过结束标识可以便捷地确定服务器发送的情况。
本实施例中,客户端每次接收到事件列表分页,则检测该事件列表分页是否包括结束标识,以确定该用户ID对应的所有事件是否已经全部发送给客户端。
S404:若事件列表分页包括结束标识,则将所有发送时长在预设超期时长内的事件列表分页确定为后台事件列表。
S405:若存在一事件列表分页的发送时长不在预设超期时长内,则清空已经接收的所有事件列表分页。
本实施例中,当存在一事件列表分页的发送时长不在预设超期时长内,则清空已经接收的所有事件列表分页,以减低客户端的存储压力,然后重新发送事件同步请求,保证后续客户端可以实现同时同步。
本实施例所提供的多事件同步处理方法,接收服务器异步发送的用户ID对应的每一事件列表分页,获取每一事件列表分页的发送时长;判断每一事件列表分页的发送时长是否在预设超期时长内,保证后续客户端可以实现同时同步。若每一事件列表分页的发送时长在预设超期时长内,则检测事件列表分页中是否包括结束标识,以确定该用户ID对应的所有事件列表分页是否已经全部发送给客户端。若事件列表分页包括结束标识,则将所有发送时长在预设超期时长内的事件列表分页确定为后台事件列表;若存在一事件列表分页的发送时长不在预设超期时长内,则清空已经接收的所有事件列表分页,避免重新执行向服务器发送事件同步请求后,与服务器发送的用户ID对应的后台事件列表重复,同时减低客户端的存储压力。
在一实施例中,如图5所示,步骤S205,即将同一事件类型对应的所有待同步事件进行合并处理,获取目标事件集合,显示目标事件集合,包括:
S501:将同一事件类型的所有待同步事件进行合并处理,获取至少一个合并事件子集合,每一合并事件子集合对应一个事件类型。
其中,合并事件子集合是将同一事件类型的待同步事件集合在一起得到的集合。
本实施例中,同一事件类型的所有待同步事件进行合并处理,获取至少一个合并事件子集合,以便客户端对同一事件类型的待同步事件同时进行处理,有利于提高客户端处理效率,实现快速地用户ID的不同客户端同步事件。
S502:采用去重容器对每一合并事件子集合进行去重处理,获取每一合并事件子集合对应的去重子集合。
其中,去重容器是用于排除合并事件子集合中重复事件的容器。采用去重容器对每一合并事件子集合进行去重处理,获取每一合并事件子集合对应的去重子集合,保证去重子集合中的每一个待同步事件具有唯一性,后续可以加快同步速度,避免重复处理待同步事件。
S503:将至少一个去重子集合,确定为目标事件集合。
本实施例中,将至少一个事件类型对应的去重子集合汇总,确定为目标事件集合,可以保证目标事件集合中的每一待同步事件具有唯一性,保证后续可以准确地进行同步。
本实施例所提供的多事件同步处理方法,将同一事件类型的所有待同步事件进行合并处理,获取至少一个合并事件子集合,每一合并事件子集合对应一个事件类型;采用去重容器对每一合并事件子集合进行去重处理,获取每一合并事件子集合对应的去重子集合,保证去重子集合中的每一个待同步事件具有唯一性,后续可以加快同步速度,且避免重复处理待同步事件。将至少一个去重子集合,确定为目标事件集合,保证后续可以准确地进行同步。
在一实施例中,每一待同步事件包括事件ID。如图6所示,步骤S502,即采用去重容器对每一合并事件子集合进行去重处理,获取每一合并事件子集合对应的去重子集合,包括:
S601:采用去重容器,判断合并事件子集合中是否存在重复的事件ID。
S602:若合并事件子集合中存在重复的事件ID,则保留其中一个事件ID和对应的待同步事件,获取去重子集合。
具体地,合并事件子集合中每一待同步事件包括事件ID,当存在重复的事件ID,则说明合并事件子集合中存在重复的待同步事件,为保证后续是对唯一的待同步事件进行同步,则对于重复的事件ID仅保留其中一个事件ID和对应的待同步事件,例如可以保留第一个事件ID或者最后一个事件ID,在此不做限定,并将其他重复的事件ID和待同步事件删除;对比不存在重复事件ID的待同步事件,则不做处理,然后将保留其中一个事件ID和对应的待同步事件和不存在重复事件ID的待同步事件确定为去重子集合,保证去重子集合中每一待同步事件具有唯一性,后续可以顺利完成同步。
S603:若合并事件子集合中不存在重复的事件ID,则将合并事件子集合确定为去重子集合。
本实施例所提供的多事件同步处理方法,采用去重容器,判断合并事件子集合中是否存在重复的事件ID;若合并事件子集合中存在重复的事件ID,则保留其中一个事件ID和对应的待同步事件,获取去重子集合;若合并事件子集合中不存在重复的事件ID,则将合并事件子集合确定为去重子集合,保证去重子集合中每一待同步事件具有唯一性,后续可以顺利完成同步。
在一实施例中,待同步事件包括处理状态,处理状态包括待处理状态和已处理状态。如图7所示,在步骤S205之后,即在将同一事件类型对应的所有待同步事件进行合并处理,获取目标事件集合,显示目标事件集合之后,方法还包括:
S701:检测目标事件集合中每一待同步事件的处理状态是否为已处理状态。
其中,处理状态是指待同步事件是否已经同步的状态,该处理状态包括待处理状态和已处理状态。待处理状态是指还没有同步的状态,该待处理处理状态是客户端确定待处理事件后,将每一待处理事件的处理状态确定为待处理状态。已处理状态是已经将待处理事件显示给用户观看的状态。
本实施例中,检测目标事件集合中的每一待同步事件的处理状态,以保证对所有的待同步事件都进行处理,避免出现遗落。
S702:若目标事件集合中每一待同步事件的处理状态为已处理状态,则更新本地数据库的本地事件列表。
具体地,将所有待同步事件和对应的已处理状态添加到本地事件列表中,更新该本地数据库的本地事件列表,保证后续的同步可以正常执行。
S703:若目标事件集合中存在待同步事件的处理状态为待处理状态,则执行对待同步事件进行分析,确定待同步事件对应的事件类型。
具体地,当目标事件集合中存在待处理状态的待同步事件,则执行步骤S204,以实现对目标事件集合中的所有事件进行处理,以保证所有的待同步事件可以在不同的客户端同步。
本实施例所提供的多事件同步处理方法,检测目标事件集合中每一待同步事件的处理状态是否为已处理状态,以保证对所有的待同步事件都进行处理,避免出现遗落。若目标事件集合中每一待同步事件的处理状态为已处理状态,则更新本地数据库的本地事件列表,保证后续的同步可以正常执行。若目标事件集合中存在待同步事件的处理状态为待处理状态,则执行对待同步事件进行分析,确定待同步事件对应的事件类型,以保证所有的待同步事件可以在不同的客户端同步。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种多事件同步处理装置,该多事件同步处理装置与上述实施例中多事件同步处理方法一一对应。如图8所示,该多事件同步处理装置包括事件同步请求模块801、后台事件列表接收模块802、待同步事件获取模块803、事件类型获取模块804和目标事件集合获取模块805。各功能模块详细说明如下:
事件同步请求模块801,用于向服务器发送事件同步请求,事件同步请求包括用户ID。
后台事件列表接收模块802,用于接收服务器发送的用户ID对应的后台事件列表。
待同步事件获取模块803,用于将本地数据库中存储的本地事件列表与后台事件列表进行对比,获取待同步事件。
事件类型获取模块804,用于对待同步事件进行分析,确定待同步事件对应的事件类型。
目标事件集合获取模块805,用于将同一事件类型对应的所有待同步事件进行合并处理,获取目标事件集合,显示目标事件集合。
优选地,事件同步请求模块801,包括:心跳机制启动单元和触发单元。
心跳机制启动单元,用于检测客户端的当前状态,在当前状态变更时,启动心跳机制。
触发单元,用于基于心跳机制,触发向服务器发送事件同步请求。
优选地,后台事件列表包括至少一个事件列表分页。后台事件列表接收模块802,包括:发送时长获取单元、超期判断单元、检测单元、后台事件列表确定单元和清空单元。
发送时长获取单元,用于接收服务器异步发送的用户ID对应的每一事件列表分页,获取每一事件列表分页的发送时长。
超期判断单元,用于判断每一事件列表分页的发送时长是否在预设超期时长内。
检测单元,用于若每一事件列表分页的发送时长在预设超期时长内,则检测事件列表分页中是否包括结束标识。
后台事件列表确定单元,用于若事件列表分页包括结束标识,则将所有发送时长在预设超期时长内的事件列表分页确定为后台事件列表。
第一清空单元,用于若存在一事件列表分页的发送时长不在预设超期时长内,则清空已经接收的所有事件列表分页。
优选地,在超期判断单元之后,多事件同步处理装置还包括:第二清空单元。
第二清空单元,用于若存在一事件列表分页的发送时长不在预设超期时长内,则清空已经接收的所有事件列表分页。
优选地,目标事件集合获取模块805,包括:合并处理单元、去重处理单元和目标事件集合确定单元。
合并处理单元,用于将同一事件类型的所有待同步事件进行合并处理,获取至少一个合并事件子集合,每一合并事件子集合对应一个事件类型。
去重处理单元,用于采用去重容器对每一合并事件子集合进行去重处理,获取每一合并事件子集合对应的去重子集合。
目标事件集合确定单元,用于将至少一个去重子集合,确定为目标事件集合。
优选地,每一待同步事件包括事件ID。去重处理单元,包括:重复判断子单元、第一处理子单元和第二处理子单元。
重复判断子单元,用于采用去重容器,判断合并事件子集合中是否存在重复的事件ID。
第一处理子单元,用于若合并事件子集合中存在重复的事件ID,则保留其中一个事件ID和对应的待同步事件,获取去重子集合。
第二处理子单元,用于若合并事件子集合中不存在重复的事件ID,则将合并事件子集合确定为去重子集合。
优选地,在目标事件集合获取模块805之后,装置还包括:处理状态检测模块、已处理状态模块和待处理状态模块。
处理状态检测模块,用于检测目标事件集合中每一待同步事件的处理状态是否为已处理状态。
已处理状态模块,用于若目标事件集合中所有待同步事件的处理状态为已处理状态,则更新本地数据库的本地事件列表。
待处理状态模块,用于若目标事件集合中存在至少一个待同步事件的处理状态为待处理状态,则执行对待同步事件进行分析,确定待同步事件对应的事件类型。
关于多事件同步处理装置的具体限定可以参见上文中对于多事件同步处理方法的限定,在此不再赘述。上述多事件同步处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储本地事件列表。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多事件同步处理方法方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中多事件同步处理方法方法的步骤,例如图2所示的步骤S201-S205,或者图3至图7中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现多事件同步处理装置这一实施例中的各模块/单元的功能,例如图8所示的事件同步请求模块801、后台事件列表接收模块802、待同步事件获取模块803、事件类型获取模块804和目标事件集合获取模块805的功能,为避免重复,这里不再赘述。
在一实施例中,提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中多事件同步处理方法方法的步骤,例如图2所示的步骤S201-S205,或者图3至图7中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现多事件同步处理装置这一实施例中的各模块/单元的功能,例如图8所示的事件同步请求模块801、后台事件列表接收模块802、待同步事件获取模块803、事件类型获取模块804和目标事件集合获取模块805的功能,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。