CN105471716A - 实现跨客户端消息同步的方法、用户设备及服务器 - Google Patents
实现跨客户端消息同步的方法、用户设备及服务器 Download PDFInfo
- Publication number
- CN105471716A CN105471716A CN201510947238.XA CN201510947238A CN105471716A CN 105471716 A CN105471716 A CN 105471716A CN 201510947238 A CN201510947238 A CN 201510947238A CN 105471716 A CN105471716 A CN 105471716A
- Authority
- CN
- China
- Prior art keywords
- conversation message
- request
- time stamp
- message
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/58—Message adaptation for wireless communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种实现跨客户端消息同步的方法、用户设备及服务器。本发明实现跨客户端消息同步的方法,包括:本地客户端获取需同步的会话消息对应的会话标识;所述本地客户端确定请求时间戳以及所请求的在所述请求时间戳之前的消息范围;所述本地客户端向服务器发送同步请求,所述同步请求包括:所述请求时间戳、所述会话标识、所述消息范围;所述本地客户端接收所述服务器根据所述同步请求反馈的会话消息队列。本发明实现了将所有会话标识对应的会话消息都能在不同用户设备上的客户端进行同步。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种实现跨客户端消息同步的方法、用户设备及服务器。
背景技术
随着网络的普及,即时通信(InstantMessaging,简称IM)工具已经成为人们进行信息交互的一种主要方式,而且用户通常会使用多个终端使用IM工具,这样就需要在多个终端的客户端同步消息。
目前,在多端同步消息的实现方案上,都采用在各端客户端登录后,用当前登录的时间作为获取同步消息的时间戳到服务器同步一定总数量(例如100条)的最新的消息到客户端,这样实现某种程度上的一部分消息的同步。然而,这种方法当部分好友或群组的消息同步达到总数量后,则其他好友或群组的会话的消息无法实现同步。这样造成了IM消息以片段的形式分布在不同的客户端上,每一端都没有完整的消息内容。
发明内容
本发明提供一种实现跨客户端消息同步的方法、用户设备及服务器,以实现将所有会话标识对应的会话消息都能在不同用户设备上的客户端进行同步。
第一方面,本发明提供一种实现跨客户端消息同步的方法,包括:
本地客户端获取需同步的会话消息对应的会话标识;
所述本地客户端确定请求时间戳以及所请求的在所述请求时间戳之前的消息范围;
所述本地客户端向服务器发送同步请求,所述同步请求包括:所述请求时间戳、所述会话标识、所述消息范围;
所述本地客户端接收所述服务器根据所述同步请求反馈的会话消息队列。
第二方面,本发明提供一种实现跨客户端消息同步的方法,包括:
服务器接收第一客户端发送的同步请求;所述同步请求包括:请求时间戳、会话标识、消息范围;所述请求时间戳表示所述第一客户端请求在所述请求时间戳之前的会话消息;
所述服务器根据所述同步请求获取会话消息队列,并发送给所述第一客户端。
第三方面,本发明提供一种用户设备,包括:
获取模块,用于获取需同步的会话消息对应的会话标识;
确定模块,用于确定请求时间戳以及所请求的在所述请求时间戳之前的消息范围;
发送模块,用于向服务器发送同步请求,所述同步请求包括:所述请求时间戳、所述会话标识、所述消息范围;
接收模块,用于接收所述服务器根据所述同步请求反馈的会话消息队列。
第四方面,本发明提供一种服务器,包括:
接收模块,用于接收用户设备发送的同步请求;所述同步请求包括:请求时间戳、会话标识、消息范围;所述请求时间戳表示所述用户设备请求在所述请求时间戳之前的会话消息;
获取模块,用于根据所述同步请求获取会话消息队列;
发送模块,用于将所述获取模块获取到的会话消息队列发送给所述用户设备。
本发明实现跨客户端消息同步的方法、用户设备及服务器,通过本地客户端根据需同步的会话消息对应的会话标识、请求时间戳以及所请求的在所述请求时间戳之前的消息范围,向向服务器发送同步请求,用户设备接收服务器根据所述同步请求反馈的会话消息队列,相比现有技术而言,能够实现将所有会话标识对应的会话消息都能在不同用户设备上的客户端进行同步。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实现跨客户端消息同步的方法一实施例的流程示意图;
图2为本发明方法实施例对应的网络架构示意图;
图3为本发明方法实施例中的会话窗口示意图;
图4为本发明实现跨客户端消息同步的方法另一实施例的流程示意图;
图5A为本发明用户设备一实施例的结构示意图;
图5B为本发明用户设备另一实施例的结构示意图;
图6为本发明服务器一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例所涉及的用户设备,可以包括但不限于智能手机、平板电脑、计算机等移动通讯设备,还可以包括既具有触摸屏也具有物理按键的移动终端,本发明实施例并不限定。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明实现多客户端消息同步的方法一实施例的流程示意图。本实施例的执行主体为用户设备中的本地客户端。如图1所示,本实施例的方法,包括:
步骤101、本地客户端获取需同步的会话消息对应的会话标识;
步骤102、本地客户端确定请求时间戳以及所请求的在请求时间戳之前的消息条数;
步骤103、本地客户端向服务器发送同步请求,同步请求包括:请求时间戳、会话标识、消息范围;
步骤104、本地客户端接收服务器根据同步请求反馈的会话消息队列。
具体来说,服务器端保存了用户设备的本地客户端中所有联系人的会话消息,用户设备的本地客户端可以在登录过程中向服务器获取需同步的会话消息对应的会话标识,如联系人1的会话消息对应的会话标识;本地客户端例如是微信、QQ、popo等。
本地客户端在同步消息时,需要确定请求时间戳以及消息范围,即请求在该请求时间戳之前的会话消息;该请求时间戳可以为当前时间。
其中,在实际应用中,消息范围包括:会话消息条数或回溯时间区间。
具体来说,消息范围可以是请求的消息条数,或回溯时间区间,回溯时间区间表示请求在请求时间戳之前的请求回溯时间区间内的会话消息。
然后用户设备的本地客户端向服务器发送包含请求时间戳、会话标识和消息范围的同步请求,服务器接收到该同步请求后,根据该同步请求获取相应的会话消息队列并发送给用户设备。
安装有本地客户端的用户设备可以通过轮循的方式,每次获取预设的条数或预设的回溯时间区间的消息,直到服务器没有消息返回为止,则表示该会话标识下的所有消息都已经同步到该用户设备的本地客户端中,同步消息完成,该用户设备的本地客户端拥有了该会话标识对应的所有会话消息。用户设备针对所有的联系人和群组的会话标识去向服务器获取会话消息,则能获取到所有联系人和群组的所有会话消息。
其中,在实际应用中,本地客户端获取需同步的会话消息对应的会话标识之后,包括:
本地客户端以当前时间更新当前的请求时间戳。
具体来说,本地客户端每次在登陆客户端后,同步会话消息时,都可以以当前时间作为请求时间戳,发送同步请求,用于请求在当前时间之前的会话消息。
例如,假设用户A的一个联系人为用户B,消息范围包括消息条数,且每次同步的消息条数为20条;
1)用户B和用户A在8:00-9:00发送了20条会话消息。
2)用户A在9:10登陆计算机上的本地客户端,取当前时间9:10作为请求时间戳去同步和用户B的会话消息,由于每次同步的消息条数为20条,则本地客户端同步20条会话消息,服务器反馈的20条会话消息都同步成功。
3)用户A在9:30再次登陆计算机上的所述本地客户端,此时,以当前时间9:30作为请求时间戳,向服务器发送同步请求,可以避免上次登录时间9:10至当前时间9:30之间遗漏的聊天记录。
图2为本发明方法实施例对应的网络架构示意图。如图2所示,不同的用户设备的本地客户端都可以向服务器发起同步请求,获取会话消息。
在上述实施例的基础上,进一步的,在实际应用中,为了将某一会话标识对应的所有会话消息都同步到用户设备中,可以在步骤104之后,进行如下操作:
本地客户端从服务器反馈的会话消息队列中获取其中的反馈最小时间戳;
本地客户端获取与会话标识对应的会话消息队列的本地最大时间戳;
当反馈最小时间戳大于本地最大时间戳时,本地客户端以反馈最小时间戳更新当前的请求时间戳。
具体来说,本地客户端可以根据会话标识查找本地客户端中所有已同步的会话消息队列中的本地最大时间戳,当反馈最小时间戳大于本地最大时间戳时,表明本地客户端中还可能有未同步的会话消息,本地客户端可以基于服务器返回的会话消息队列,再次向服务器发起同步请求,这次同步请求中的请求时间戳设置为服务器反馈的会话消息队列中的反馈最小时间戳。
其中,反馈最小时间戳对应的会话消息为服务器反馈的会话消息队列中时间最早的会话消息。
本地最大时间戳为本地客户端已存储的会话消息的最大时间戳。
用户设备可以多次向服务器发起同步请求,直至服务器返回的会话消息条数小于一设定阈值或反馈的最小时间戳小于本地最大时间戳,则说明本地客户端中已经同步了所有会话消息。
接上例,假设用户A的一个联系人为用户B,消息范围包括消息条数,且每次同步的消息条数为20条;
3)用户B和用户A在9:30-10:00也发送了20条会话消息。
4)用户A在10:10登陆计算机上的本地客户端,取当前时间10:10作为请求时间戳去同步和用户B的会话消息,由于每次同步的消息条数为20条,则第一次以当前时间10:10作为请求时间戳,只能同步20条会话消息,假设该20条会话消息中最小的一条时间戳为9:30,则从服务器反馈的会话消息队列中获取其中的反馈最小时间戳即为9:30。接上例,本地客户端已经在9:10分时同步了8:00-9:00的聊天记录,假设8:00-9:00的聊天记录中最大的一条时间戳时9:00,则获取与会话标识对应的会话消息队列的本地最大时间戳即为9:00,此时反馈最小时间戳9:30大于本地最大时间戳9:00,故此,本地客户端以反馈最小时间戳9:30更新当前的请求时间戳,第二次发起同步请求,可以避免9:00-9:30之间遗漏的聊天记录。经过两次同步反馈,用户A在10:10分得到8:00-10:00之间的40条聊天记录。
图3为本发明方法实施例中的会话窗口示意图。以下以移动终端以及计算机上安装popo客户端的同步过程进行举例说明:
示例一
移动终端安装popo客户端,登录后初始化时,将所有好友、群组的请求时间戳都设置成当前时间。
选择某个好友或者群组,在会话界面上不断的下拉获取会话消息,下拉一次会执行一次同步消息的过程,直到服务器不再返回消息,则表明与这个好友或者群组的消息已经同步完成。
如果同步过程中中断同步消息,比如注销,或者用户手动下拉了几次后就不再下拉同步消息了,则下次登录或者用户继续手动下拉来获取消息的时候,仍然可以对之前没有完成的同步消息进行同步,直到服务器不再返回消息,同步完成。
该客户端中某个会话窗口,如图3所示,该会话窗口中显示了部分消息。
示例二
计算机上安装popo客户端,登录后初始化时,将所有好友、群组的请求时间戳都设置成当前时间。
从消息列表中选择某个联系人,点击后打开右边的会话窗口进行消息同步。在会话窗口中向下滚动鼠标,下拉一次则会向服务器请求一次会话消息,直到服务器不再返回消息,则表明与这个好友或者群组的消息已经同步完成。
如果同步过程中中断同步消息,比如注销,或者用户手动滑动了几次后就不再同步消息了,则下次登录或者用户继续手动滑动来获取消息的时候,仍然可以对之前没有完成的同步消息进行同步,直到服务器不再返回消息,同步完成。
在实际应用中,还可以设置为间隔一预设周期进行自动同步,用户设备每隔所述预设周期向服务器发送同步请求。
本实施例提供的实现跨客户端消息同步的方法,通过本地客户端根据需同步的会话消息对应的会话标识、请求时间戳以及所请求的在所述请求时间戳之前的消息范围,向服务器发送同步请求,用户设备接收服务器根据所述同步请求反馈的会话消息队列,相比现有技术而言,能够实现将所有会话标识对应的会话消息都能在不同用户设备上的客户端进行同步。
进一步的,在实际应用中,还可以进行如下操作:
本地客户端获取与会话标识对应的会话消息队列的本地最小时间戳;
当反馈最小时间戳小于本地最大时间戳时,根据本地最小时间戳、反馈最小时间戳当中较小的一个时间戳更新当前的本地最小时间戳,本地客户端以当前的本地最小时间戳更新当前的请求时间戳;
本地客户端根据存储与会话标识对应的会话消息当中与当前时间最近的一个时间戳更新当前的本地最大时间戳。
具体来说,本地客户端可以根据会话标识查找本地客户端中所有已同步的会话消息队列中的本地最小时间戳。
当反馈最小时间戳小于本地最大时间戳时,根据本地最小时间戳、反馈最小时间戳当中较小的一个时间戳更新当前的本地最小时间戳,然后本地客户端以当前的本地最小时间戳更新当前的请求时间戳;
本地客户端根据存储与会话标识对应的会话消息当中与当前时间最近的一个时间戳更新当前的本地最大时间戳。
举例说明如下:
接上列,假设用户A的一个联系人为用户B,消息范围包括消息条数,且每次同步的消息条数为20条;用户B和用户A在8:00-10:00发送了40条会话消息。用户A在10:10登陆计算机上的客户端,取当前时间10:10去同步和用户B的会话消息,假设所有的40条都同步成功了,则用户A本地的时间戳数据库中保存已同步会话消息的时间段是[8:00-10:00],此时本地最小时间戳为8:00,本地最大时间戳为10:00;
5)用户A注销退出计算机上的客户端。用户B在11:00到12:00又给用户A发送了25条会话消息。
6)用户A在13:00的时候又登陆了计算机上的客户端,以当前时间戳13:00作为请求时间戳去同步和用户B的会话消息,第一次同步20条会话消息,由于B在[11:00-12:00]发送了25条消息,还有5条会话消息没有漫游下来,因此这20条消息中的反馈最小时间戳假设为11:15。此时反馈最小时间戳为11:15,本地时间戳数据库中有[8:00-10:00],即本地最小时间戳为8:00,本地最大时间戳为10:00,由于反馈最小时间戳11:15大于所述本地最大时间戳10:00,则中间还有消息没有同步到(此时确实还有5条消息没有同步到),用户A在本地的时间戳数据库中保存了时间段是[8:00-10:00],[11:15-13:00]。此时,需要强调的是本地最小时间戳仍为8:00,本地最大时间戳仍为10:00;
7)由于反馈最小时间戳为11:15大于本地最大时间戳10:00,用户A第二次是以反馈最小时间戳11:15更新当前的请求时间戳,去同步消息,其中5条会话消息属于[11:00-11:15],剩下的15条会话消息假设最早的会话消息的时间是9:45,则是属于[9:45-10:00],这种情况下,反馈最小时间戳为9:45,因此反馈最小时间戳9:45小于已保存的本地最大时间戳10:00,说明已保存的会话消息和反馈的会话消息之间有重叠,说明本地最大时间戳和当前的请求时间戳之间的会话消息已同步完毕,则根据本地最小时间戳8:00、反馈最小时间戳9:45当中较小的一个时间戳更新当前的本地最小时间戳,即将当前的本地最小时间戳更新为8:00,且以当前的本地最小时间戳更新当前的请求时间戳,即如果第三次要请求消息便以当前的本地最小时间戳8:00作为请求时间戳进行消息同步,请求8:00前的聊天记录;
此时,找到已同步的会话消息队列中的最大时间戳,即该最大时间戳与当前时间最接近,以该最大时间戳更新当前的本地最大时间戳,即更新后的本地最大时间戳为13:00,这样就将[8:00-10:00],[11:15-13:00]的时间段合并成了[8:00-3:00],即[8:00-13:00]时间段内的消息都已同步过。
8)如果继续同步,则会取8:00的时间戳去服务器端漫游消息。即漫游8:00之前更早的消息。
进一步的,在实际应用中,为了避免将之前已同步的会话消息进行重复存储,浪费资源,因此在步骤104之后,还可以进行如下操作:
本地客户端根据服务器发送的会话消息的通用唯一识别码(UniversallyUniqueIdentifier,简称UUID),确定本地客户端中是否已存储会话消息队列中的会话消息;
若本地客户端未存储会话消息,则将会话消息存储到本地客户端中。
若本地客户端中已存储会话消息,则可以删掉会话消息。
进一步的,在实际应用中,本地客户端获取需同步的会话消息对应的会话标识,可以具体采用如下方式实现:
本地客户端在登录过程中向服务器发送获取请求;
本地客户端接收服务器发送的本地客户端中的联系人和/或群组的会话标识。
具体来说,用户设备的本地客户端在向服务器发送同步请求时,需要知道需同步的会话消息对应的会话标识,可以是本地客户端在登录过程中向服务器发送获取请求;然后,服务器向本地客户端返回本地客户端中的联系人和/或群组的会话标识。
图4为本发明实现多客户端消息同步的方法另一实施例的流程示意图。本实施例的执行主体为服务器,其中,第一客户端可以为设置在任一用户设备上的本地客户端。如图4所示,本实施例的方法,包括:
步骤401、服务器接收第一客户端发送的同步请求;同步请求包括:请求时间戳、会话标识、消息范围;请求时间戳表示第一客户端请求在请求时间戳之前的会话消息;
步骤402、服务器根据同步请求获取会话消息队列,并发送给第一客户端。
具体来说,服务器端保存了用户设备的本地客户端中所有联系人的会话消息,用户设备的本地客户端可以在登录过程中向服务器获取需同步的会话消息对应的会话标识,如联系人1的会话消息对应的会话标识;本地客户端例如是微信、QQ、popo等。
本地客户端在同步消息时,需要确定请求时间戳以及消息范围,即请求在该请求时间戳之前的会话消息;该请求时间戳可以为当前时间。
其中,在实际应用中,消息范围包括:会话消息条数或回溯时间区间。
具体来说,消息范围可以是请求的消息条数,或回溯时间区间,回溯时间区间表示请求在请求时间戳之前的请求回溯时间区间内的会话消息。
然后用户设备的本地客户端向服务器发送包含请求时间戳、会话标识和消息范围的同步请求,服务器接收到该同步请求后,根据该同步请求获取相应的会话消息队列并发送给用户设备。
安装有本地客户端的用户设备可以通过轮循的方式,每次获取预设的条数或预设的回溯时间区间的消息,直到服务器没有消息返回为止,则表示该会话标识下的所有消息都已经同步到该用户设备的本地客户端中,同步消息完成,该用户设备的本地客户端拥有了该会话标识对应的所有会话消息。用户设备针对所有的联系人和群组的会话标识去向服务器获取会话消息,则能获取到所有联系人和群组的所有会话消息。
其中,在实际应用中,本地客户端获取需同步的会话消息对应的会话标识之后,包括:
本地客户端以当前时间更新当前的请求时间戳。
具体来说,本地客户端在每次同步会话消息时,都可以以当前时间作为请求时间戳,发送同步请求,用于请求在当前时间之前的会话消息。
例如,假设用户A的一个联系人为用户B,消息范围包括消息条数,且每次同步的消息条数为20条;
1)用户B和用户A在8:00-10:00发送了40条会话消息。
2)用户A在10:10登陆计算机上的本地客户端,取当前时间10:10作为请求时间戳去同步和用户B的会话消息,由于每次同步的消息条数为20条,则第一次只能同步20条会话消息,剩余的20条会话消息通过再发一次同步请求,这次的同步请求中的请求时间戳设置为第一次已同步的20条会话消息中的最小时间戳,则两次同步之后,所有的40条会话消息都同步成功了。
如图2所示,不同的用户设备都可以向服务器发起同步请求,获取会话消息。
服务器侧的方法实施例与用户设备侧类似,此处不再详细描述,具体可参见用户设备侧的实施例。
在上述实施例的基础上,进一步的,在实际应用中,所述消息范围包括:会话消息条数N;
若获取的所述会话消息的消息条数大于所述会话消息条数N,则将所述会话消息按时间戳降序排列,并将包含第1条至第N条消息的会话消息队列发送给第一客户端;
若获取的所述会话消息的消息条数小于或等于所述会话消息条数N,则将所述会话消息按时间戳降序排列形成会话消息队列并发送给第一客户端。
具体来说,服务器根据同步请求,获取会话标识对应的请求时间戳之前的会话消息,当消息范围包括会话消息条数N时,若消息条数大于该同步请求中的会话消息条数N,则可以按时间戳降序排列,将最新的消息形成会话消息队列发送给用户设备;若消息条数小于或等于该同步请求中的会话消息条数N,则也可以按时间戳降序排列,将全部的消息形成会话消息队列发送给用户设备。
在上述实施例的基础上,进一步的,在实际应用中,消息范围包括:回溯时间区间;
若在请求时间戳之前的回溯时间区间内存在会话消息,则将会话消息按时间戳降序排列成会话消息队列,并将会话消息队列发送给第一客户端。
具体来说,若消息范围包括回溯时间区间时,服务器将在请求时间戳之前的回溯时间区间内的会话消息,发送给第一客户端,可以按时间戳降序排列成会话消息队列发送给第一客户端。
例如,假设用户A的一个联系人为用户B,消息范围包括回溯时间区间,且每次同步的回溯时间区间为2小时;
1)用户B和用户A在8:00-10:00发送了40条会话消息。
2)用户A在10:10登陆计算机上的本地客户端,取当前时间10:10作为请求时间戳去同步和用户B的会话消息,由于每次回溯时间区间为2小时,则第一次只能同步10:10-8:10之间的聊天记录,假设[10:10-8:10]存在38条聊天记录,其中反馈最小时间戳为8:15,反馈最大时间戳为10:00。此时,本地存储的会话消息列表的本地最小时间戳为8:15,本地存储的会话消息列表的本地最大时间戳为10:00。由于反馈最小时间戳8:15小于所述本地最大时间戳10:00,根据所述本地最小时间戳、所述反馈最小时间戳当中较小的一个时间戳更新当前的本地最小时间戳,所述本地客户端以当前的本地最小时间戳8:15更新当前的请求时间戳,则剩余的2条会话消息可以通过第二次同步请求获得。假设8:00前都没有其他聊天记录,则服务器第二次返回8:15-6:15之间的2条聊天记录,经过两次同步之后,所有40条会话消息都同步成功了。
进一步的,在实际应用中,服务器接收第一客户端发送的同步请求之前,还可以包括如下步骤:
服务器接收第一客户端在登录过程中向服务器发送的获取请求,获取请求用于请求获取第一客户端需同步的会话消息对应的会话标识;
服务器向所述第一客户端发送第一客户端中的联系人和/或群组的会话标识。
具体来说,用户设备的第一客户端在向服务器发送同步请求时,需要知道需同步的会话消息对应的会话标识,可以是第一客户端在登录过程中向服务器发送获取请求;然后,服务器向第一客户端返回第一客户端中的联系人和/或群组的会话标识。
需要说明的是,服务器侧的方法实施例的技术方案,与用户设备侧的方法实施例的实现原理和技术效果类似,此处不再赘述。
图5A为本发明用户设备一实施例的结构示意图。如图5A所示,本实施例的用户设备,包括:获取模块501、确定模块502、发送模块503和接收模块504;
其中,获取模块501,用于获取需同步的会话消息对应的会话标识;
确定模块502,用于确定请求时间戳以及所请求的在所述请求时间戳之前的消息范围;
发送模块503,用于向服务器发送同步请求,所述同步请求包括:所述请求时间戳、所述会话标识、所述消息范围;
接收模块504,用于接收所述服务器根据所述同步请求反馈的会话消息队列。
可选地,作为一种可实施的方式,所述确定模块502,还用于以当前时间更新当前的请求时间戳。
可选地,作为一种可实施的方式,所述获取模块501,还用于:
从所述服务器反馈的会话消息队列中获取其中的反馈最小时间戳;
获取与所述会话标识对应的会话消息队列的本地最大时间戳;
所述确定模块502,还用于:
当所述反馈最小时间戳大于所述本地最大时间戳时,以所述反馈最小时间戳更新当前的请求时间戳。
可选地,作为一种可实施的方式,所述获取模块501,还用于:
获取与所述会话标识对应的会话消息队列的本地最小时间戳;
所述确定模块502,还用于:
当所述反馈最小时间戳小于所述本地最大时间戳时,根据所述本地最小时间戳、所述反馈最小时间戳当中较小的一个时间戳更新当前的本地最小时间戳,以当前的本地最小时间戳更新当前的请求时间戳;
根据存储与所述会话标识对应的会话消息当中与当前时间最近的一个时间戳更新当前的本地最大时间戳。
图5B为本发明用户设备另一实施例的结构示意图。如图5B所示,在上述实施例结构的基础上,如图5B所示,可选地,作为一种可实施的方式,本实施例的用户设备,还包括:
处理模块505,用于根据所述服务器发送的所述会话消息的通用唯一识别码UUID,确定所述用户设备中是否已存储所述会话消息队列中的所述会话消息;
若所述用户设备中未存储所述会话消息,则将所述会话消息存储到所述用户设备中。
可选地,作为一种可实施的方式,所述获取模块501,具体用于:
在登录过程中向所述服务器发送获取请求;
所述接收模块504,具体用于:
接收服务器发送的所述用户设备的本地客户端中的联系人和/或群组的会话标识。
可选地,作为一种可实施的方式,所述消息范围包括:会话消息条数或回溯时间区间。
需要说明的是,对于用户设备的实施例而言,由于其基本相应于用户设备侧的方法实施例,所以相关之处参见用户设备侧的方法实施例的部分说明即可。
图6为本发明服务器一实施例的结构示意图。如图6所示,本实施例的服务器,包括:接收模块601、获取模块602、发送模块603;
其中,接收模块601,用于接收用户设备发送的同步请求;所述同步请求包括:请求时间戳、会话标识、消息范围;所述请求时间戳表示所述用户设备请求在所述请求时间戳之前的会话消息;
获取模块602,用于根据所述同步请求获取会话消息队列;
发送模块603,用于将所述获取模块获取到的会话消息队列发送给所述用户设备。
可选地,作为一种可实施的方式,所述消息范围包括:会话消息条数N;
若获取模块602获取到的所述会话消息的消息条数大于所述会话消息条数N,则所述发送模块603,具体用于将所述会话消息按时间戳降序排列,并将包含第1条至第N条的会话消息队列发送给所述用户设备;
若获取模块602获取到的所述会话消息的消息条数小于或等于所述会话消息条数N,则所述发送模块603,具体用于将所述会话消息按时间戳降序排列形成会话消息队列并发送给用户设备。
可选地,作为一种可实施的方式,所述消息范围包括:回溯时间区间;
若获取模块602在所述请求时间戳之前的回溯时间区间内获取到所述会话消息,则所述发送模块603,用于将所述会话消息按时间戳降序排列成会话消息队,并将所述会话消息队列发送给所述用户设备
可选地,作为一种可实施的方式,所述接收模块601,还用于:
接收所述用户设备在登录过程中向所述服务器发送的获取请求,所述获取请求用于请求获取所述用户设备的第一客户端需同步的会话消息对应的会话标识;
所述发送模块603,还用于:
向所述用户设备发送所述第一客户端中的联系人和/或群组的会话标识。
需要说明的是,对于服务器的实施例而言,由于其基本相应于服务器侧的方法实施例,所以相关之处参见服务器侧的方法实施例的部分说明即可。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (22)
1.一种实现跨客户端消息同步的方法,其特征在于,包括:
本地客户端获取需同步的会话消息对应的会话标识;
所述本地客户端确定请求时间戳以及所请求的在所述请求时间戳之前的消息范围;
所述本地客户端向服务器发送同步请求,所述同步请求包括:所述请求时间戳、所述会话标识、所述消息范围;
所述本地客户端接收所述服务器根据所述同步请求反馈的会话消息队列。
2.根据权利要求1所述的方法,其特征在于,本地客户端获取需同步的会话消息对应的会话标识之后,包括:
所述本地客户端以当前时间更新当前的请求时间戳。
3.根据权利要求1或2所述的方法,其特征在于,所述本地客户端接收所述服务器反馈的会话消息队列之后,还包括:
所述本地客户端从所述服务器反馈的会话消息队列中获取其中的反馈最小时间戳;
所述本地客户端获取与所述会话标识对应的会话消息队列的本地最大时间戳;
当所述反馈最小时间戳大于所述本地最大时间戳时,所述本地客户端以所述反馈最小时间戳更新当前的请求时间戳。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述本地客户端获取与所述会话标识对应的会话消息队列的本地最小时间戳;
当所述反馈最小时间戳小于所述本地最大时间戳时,根据所述本地最小时间戳、所述反馈最小时间戳当中较小的一个时间戳更新当前的本地最小时间戳,所述本地客户端以当前的本地最小时间戳更新当前的请求时间戳;
所述本地客户端根据存储与所述会话标识对应的会话消息当中与当前时间最近的一个时间戳更新当前的本地最大时间戳。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述本地客户端接收所述服务器根据所述同步请求反馈的会话消息队列之后,还包括:
所述本地客户端根据所述服务器发送的会话消息的通用唯一识别码UUID,确定所述本地客户端中是否已存储所述会话消息队列中的所述会话消息;
若所述本地客户端中未存储所述会话消息,则将所述会话消息存储到所述本地客户端中。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述本地客户端获取需同步的会话消息对应的会话标识,包括:
所述本地客户端在登录过程中向所述服务器发送获取请求;
所述本地客户端接收服务器发送的所述本地客户端中的联系人和/或群组的会话标识。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述消息范围包括:会话消息条数或回溯时间区间。
8.一种实现跨客户端消息同步的方法,其特征在于,包括:
服务器接收第一客户端发送的同步请求;所述同步请求包括:请求时间戳、会话标识、消息范围;所述请求时间戳表示所述第一客户端请求在所述请求时间戳之前的会话消息;
所述服务器根据所述同步请求获取会话消息队列,并发送给所述第一客户端。
9.根据权利要求8所述的方法,其特征在于,所述消息范围包括:会话消息条数N;
若获取的所述会话消息的消息条数大于所述会话消息条数N,则将所述会话消息按时间戳降序排列,并将包含第1条至第N条消息的会话消息队列发送给所述第一客户端;
若获取的所述会话消息的消息条数小于或等于所述会话消息条数N,则将所述会话消息按时间戳降序排列形成会话消息队列并发送给第一客户端。
10.根据权利要求8所述的方法,其特征在于,所述消息范围包括:回溯时间区间;
若在所述请求时间戳之前的回溯时间区间内存在所述会话消息,则将所述会话消息按时间戳降序排列成会话消息队列,并将所述会话消息队列发送给所述第一客户端。
11.根据权利要求8-10任一项所述的方法,其特征在于,所述服务器接收第一客户端发送的同步请求之前,还包括:
所述服务器接收所述第一客户端在登录过程中向所述服务器发送的获取请求,所述获取请求用于请求获取所述第一客户端需同步的会话消息对应的会话标识;
所述服务器向所述第一客户端发送所述第一客户端中的联系人和/或群组的会话标识。
12.一种用户设备,其特征在于,包括:
获取模块,用于获取需同步的会话消息对应的会话标识;
确定模块,用于确定请求时间戳以及所请求的在所述请求时间戳之前的消息范围;
发送模块,用于向服务器发送同步请求,所述同步请求包括:所述请求时间戳、所述会话标识、所述消息范围;
接收模块,用于接收所述服务器根据所述同步请求反馈的会话消息队列。
13.根据权利要求12所述的用户设备,其特征在于,所述确定模块,还用于以当前时间更新当前的请求时间戳。
14.根据权利要求12或13所述的用户设备,其特征在于,所述获取模块,还用于:
从所述服务器反馈的会话消息队列中获取其中的反馈最小时间戳;
获取与所述会话标识对应的会话消息队列的本地最大时间戳;
所述确定模块,还用于:
当所述反馈最小时间戳大于所述本地最大时间戳时,以所述反馈最小时间戳更新当前的请求时间戳。
15.根据权利要求12-14任一项所述的用户设备,其特征在于,所述获取模块,还用于:
获取与所述会话标识对应的会话消息队列的本地最小时间戳;
所述确定模块,还用于:
当所述反馈最小时间戳小于所述本地最大时间戳时,根据所述本地最小时间戳、所述反馈最小时间戳当中较小的一个时间戳更新当前的本地最小时间戳,以当前的本地最小时间戳更新当前的请求时间戳;
根据存储与所述会话标识对应的会话消息当中与当前时间最近的一个时间戳更新当前的本地最大时间戳。
16.根据权利要求12-14任一项所述的用户设备,其特征在于,还包括:
处理模块,用于根据所述服务器发送的会话消息的通用唯一识别码UUID,确定所述用户设备中是否已存储所述会话消息队列中的所述会话消息;
若所述用户设备中未存储所述会话消息,则将所述会话消息存储到所述用户设备中。
17.根据权利要求12-14任一项所述的用户设备,其特征在于,所述获取模块,具体用于:
在登录过程中向所述服务器发送获取请求;
所述接收模块,具体用于:
接收服务器发送的所述用户设备的本地客户端中的联系人和/或群组的会话标识。
18.根据权利要求12-14任一项所述的用户设备,其特征在于,所述消息范围包括:会话消息条数或回溯时间区间。
19.一种服务器,其特征在于,包括:
接收模块,用于接收用户设备发送的同步请求;所述同步请求包括:请求时间戳、会话标识、消息范围;所述请求时间戳表示所述用户设备请求在所述请求时间戳之前的会话消息;
获取模块,用于根据所述同步请求获取会话消息队列;
发送模块,用于将所述获取模块获取到的会话消息队列发送给所述用户设备。
20.根据权利要求19所述的服务器,其特征在于,所述消息范围包括:会话消息条数N;
若获取模块获取到的所述会话消息的消息条数大于所述会话消息条数N,则所述发送模块,具体用于将所述会话消息按时间戳降序排列,并将包含第1条至第N条的会话消息队列发送给所述用户设备;
若获取模块获取到的所述会话消息的消息条数小于或等于所述会话消息条数N,则所述发送模块,具体用于将所述会话消息按时间戳降序排列形成会话消息队列并发送给用户设备。
21.根据权利要求19所述的服务器,其特征在于,所述消息范围包括:回溯时间区间;
若获取模块在所述请求时间戳之前的回溯时间区间内获取到所述会话消息,则所述发送模块,用于将所述会话消息按时间戳降序排列成会话消息队,并将所述会话消息队列发送给所述用户设备。
22.根据权利要求19-21任一项所述的服务器,其特征在于,所述接收模块,还用于:
接收所述用户设备在登录过程中向所述服务器发送的获取请求,所述获取请求用于请求获取所述用户设备的第一客户端需同步的会话消息对应的会话标识;
所述发送模块,还用于:
向所述用户设备发送所述第一客户端中的联系人和/或群组的会话标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510947238.XA CN105471716A (zh) | 2015-12-17 | 2015-12-17 | 实现跨客户端消息同步的方法、用户设备及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510947238.XA CN105471716A (zh) | 2015-12-17 | 2015-12-17 | 实现跨客户端消息同步的方法、用户设备及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105471716A true CN105471716A (zh) | 2016-04-06 |
Family
ID=55609021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510947238.XA Pending CN105471716A (zh) | 2015-12-17 | 2015-12-17 | 实现跨客户端消息同步的方法、用户设备及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105471716A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230709A (zh) * | 2016-09-14 | 2016-12-14 | 广东欧珀移动通信有限公司 | 一种聊天信息区别同步的方法及装置 |
CN106230647A (zh) * | 2016-09-14 | 2016-12-14 | 广东欧珀移动通信有限公司 | 一种消息处理方法、设备、服务器及消息处理系统 |
CN106485539A (zh) * | 2016-09-18 | 2017-03-08 | 百川通联(北京)网络技术有限公司 | 一种防止广告作弊的方法及系统 |
CN107911431A (zh) * | 2017-11-07 | 2018-04-13 | 山东浪潮商用系统有限公司 | 一种消息同步方法、客户端、可读介质及存储控制器 |
CN108235803A (zh) * | 2017-01-25 | 2018-06-29 | 华为技术有限公司 | 一种消息记录合并显示方法及终端设备 |
CN110198335A (zh) * | 2018-08-30 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 消息同步方法及装置、电子设备及存储介质 |
CN110365739A (zh) * | 2019-06-05 | 2019-10-22 | 平安科技(深圳)有限公司 | 消息同步方法、装置、计算机装置及计算机可读存储介质 |
CN110391974A (zh) * | 2019-08-01 | 2019-10-29 | 北京云中融信网络科技有限公司 | 一种消息同步方法、服务端、终端及系统 |
CN111324615A (zh) * | 2018-12-13 | 2020-06-23 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置、介质及电子设备 |
CN111585774A (zh) * | 2020-03-24 | 2020-08-25 | 福建天泉教育科技有限公司 | 会话更新的方法、存储介质 |
CN112492048A (zh) * | 2020-12-14 | 2021-03-12 | 招商局金融科技有限公司 | 消息同步方法、装置、电子设备及可读存储介质 |
CN112737921A (zh) * | 2020-12-23 | 2021-04-30 | 北京百分点科技集团股份有限公司 | 消息交互方法、客户端及通信系统 |
CN112764947A (zh) * | 2021-01-15 | 2021-05-07 | 百果园技术(新加坡)有限公司 | 消息数据拉取方法、装置、设备和存储介质 |
CN112838980A (zh) * | 2020-12-30 | 2021-05-25 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、系统、装置、电子设备及存储介质 |
CN113852539A (zh) * | 2021-09-10 | 2021-12-28 | 维沃移动通信(杭州)有限公司 | 消息转发方法及装置 |
CN114513481A (zh) * | 2022-01-21 | 2022-05-17 | 浪潮软件股份有限公司 | 基于即时通信系统的多端消息同步方法及系统 |
-
2015
- 2015-12-17 CN CN201510947238.XA patent/CN105471716A/zh active Pending
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230709B (zh) * | 2016-09-14 | 2020-02-14 | Oppo广东移动通信有限公司 | 一种聊天信息区别同步的方法及装置 |
CN106230647A (zh) * | 2016-09-14 | 2016-12-14 | 广东欧珀移动通信有限公司 | 一种消息处理方法、设备、服务器及消息处理系统 |
CN106230709A (zh) * | 2016-09-14 | 2016-12-14 | 广东欧珀移动通信有限公司 | 一种聊天信息区别同步的方法及装置 |
CN106485539A (zh) * | 2016-09-18 | 2017-03-08 | 百川通联(北京)网络技术有限公司 | 一种防止广告作弊的方法及系统 |
CN106485539B (zh) * | 2016-09-18 | 2019-08-06 | 北京联动优创文化传媒有限公司 | 一种防止广告作弊的方法及系统 |
CN108235803A (zh) * | 2017-01-25 | 2018-06-29 | 华为技术有限公司 | 一种消息记录合并显示方法及终端设备 |
US11057329B2 (en) | 2017-01-25 | 2021-07-06 | Huawei Technologies Co., Ltd. | Message record combination and display method and terminal device |
CN107911431A (zh) * | 2017-11-07 | 2018-04-13 | 山东浪潮商用系统有限公司 | 一种消息同步方法、客户端、可读介质及存储控制器 |
CN110198335A (zh) * | 2018-08-30 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 消息同步方法及装置、电子设备及存储介质 |
CN111324615A (zh) * | 2018-12-13 | 2020-06-23 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置、介质及电子设备 |
CN110365739A (zh) * | 2019-06-05 | 2019-10-22 | 平安科技(深圳)有限公司 | 消息同步方法、装置、计算机装置及计算机可读存储介质 |
CN110391974A (zh) * | 2019-08-01 | 2019-10-29 | 北京云中融信网络科技有限公司 | 一种消息同步方法、服务端、终端及系统 |
CN111585774A (zh) * | 2020-03-24 | 2020-08-25 | 福建天泉教育科技有限公司 | 会话更新的方法、存储介质 |
CN112492048B (zh) * | 2020-12-14 | 2022-05-20 | 招商局金融科技有限公司 | 消息同步方法、装置、电子设备及可读存储介质 |
CN112492048A (zh) * | 2020-12-14 | 2021-03-12 | 招商局金融科技有限公司 | 消息同步方法、装置、电子设备及可读存储介质 |
CN112737921A (zh) * | 2020-12-23 | 2021-04-30 | 北京百分点科技集团股份有限公司 | 消息交互方法、客户端及通信系统 |
CN112737921B (zh) * | 2020-12-23 | 2022-07-29 | 北京百分点科技集团股份有限公司 | 消息交互方法、客户端及通信系统 |
CN112838980A (zh) * | 2020-12-30 | 2021-05-25 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、系统、装置、电子设备及存储介质 |
CN112838980B (zh) * | 2020-12-30 | 2023-06-13 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、系统、装置、电子设备及存储介质 |
CN112764947A (zh) * | 2021-01-15 | 2021-05-07 | 百果园技术(新加坡)有限公司 | 消息数据拉取方法、装置、设备和存储介质 |
CN112764947B (zh) * | 2021-01-15 | 2023-12-26 | 百果园技术(新加坡)有限公司 | 消息数据拉取方法、装置、设备和存储介质 |
CN113852539A (zh) * | 2021-09-10 | 2021-12-28 | 维沃移动通信(杭州)有限公司 | 消息转发方法及装置 |
CN114513481A (zh) * | 2022-01-21 | 2022-05-17 | 浪潮软件股份有限公司 | 基于即时通信系统的多端消息同步方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105471716A (zh) | 实现跨客户端消息同步的方法、用户设备及服务器 | |
CN108737405B (zh) | 一种对直播视频流进行导流的方法、ccl服务器和系统 | |
CN106161593B (zh) | 消息轮询方法和服务器、通信系统 | |
CN113518247B (zh) | 视频播放方法、相关设备及计算机可读存储介质 | |
CN105812235B (zh) | 消息处理方法、装置及系统 | |
CN103491055A (zh) | 一种在多个客户端间同步信息的方法、客户端和服务器 | |
CN105282013A (zh) | 事项消息通知方法、装置及系统 | |
CN101232467A (zh) | 一种实时传讯业务中应用时间戳获取信息的方法 | |
CN112839067B (zh) | 一种数据同步方法及装置 | |
CN102882762A (zh) | 一种在多页面间同步聊天状态信息的方法及系统 | |
CN107231400B (zh) | 一种数据的同步方法和装置 | |
CN110247739B (zh) | 一种消息传输方法及装置 | |
US11212342B2 (en) | Merge trees for collaboration | |
US10972296B2 (en) | Messaging to enforce operation serialization for consistency of a distributed data structure | |
CN108390933A (zh) | 消息分发方法、装置、服务器及存储介质 | |
CN104125485A (zh) | 一种用户信息共享的方法、设备及系统 | |
CN104320328A (zh) | 一种消息同步方法、终端和服务器 | |
CN114222086B (zh) | 音视频码流的调度方法、系统、介质及电子装置 | |
CN102333280A (zh) | 一种业务密钥更新的方法、系统及业务处理服务器 | |
CN106973106B (zh) | 一种获取会话信息的方法、装置及系统 | |
CN106657172A (zh) | 一种信息推送的实现方法及装置 | |
CN104469428A (zh) | 一种视频与文字即时传输的方法及装置 | |
CN110224924B (zh) | 状态更新方法和装置、存储介质及电子装置 | |
CN105516247A (zh) | 通信应用的信息推荐方法和装置 | |
CN103795810A (zh) | 数据分发系统及方法以及该数据分发系统中的中心服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160406 |
|
RJ01 | Rejection of invention patent application after publication |