CN112737921B - 消息交互方法、客户端及通信系统 - Google Patents
消息交互方法、客户端及通信系统 Download PDFInfo
- Publication number
- CN112737921B CN112737921B CN202011537960.3A CN202011537960A CN112737921B CN 112737921 B CN112737921 B CN 112737921B CN 202011537960 A CN202011537960 A CN 202011537960A CN 112737921 B CN112737921 B CN 112737921B
- Authority
- CN
- China
- Prior art keywords
- message
- messages
- client
- identifier
- preset number
- 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.)
- Active
Links
Images
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/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- 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
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
Abstract
本申请公开了一种消息交互方法、客户端及通信系统,涉及通信领域,以解决因网络状况不好引起的消息同步失败的问题。所述信息交互方法包括:客户端与服务端建立通信连接;所述客户端接收由服务端推送的第一预设数目的消息,并将所述第一预设数目的消息保存在本地,所述第一预设数目的消息为历史消息的一部分;所述客户端从本地获取所述第一预设数目的消息中的至少一部分消息进行显示。本申请用于信息交互。
Description
技术领域
本申请涉及通信领域,尤其涉及一种消息交互方法、客户端及通信系统。
背景技术
互联网的发展使人与人之间的沟通变得更加便捷,人们可以通过各种客户端进行沟通。并且,根据人们所在的环境不同,可以对应地更换所使用的客户端。例如,人们在工作时习惯使用电脑进行沟通,而下班后习惯使用手机进行沟通。
为了使用户在不同客户端看到的消息均是完整的,现有技术中将不同客户端的消息进行同步显示的方法是当用户在客户端登录时,即从服务端获取所有历史消息并展示给用户。
但是,这种历史消息的获取方式完全依赖于服务端,存在当网络不好时,从服务端获取历史消息失败,导致客户端无法将历史消息显示给用户的问题。
发明内容
本申请实施例提供一种消息交互方法、客户端及通信系统,能够解决因网络状况不好引起的消息同步失败的问题。
为了实现上述目的,本申请实施例采用下述技术方案:
第一方面,提供了一种消息交互方法,所述方法包括:
客户端与服务端建立通信连接;
所述客户端接收由服务端推送的第一预设数目的消息,并将所述第一预设数目的消息保存在本地,所述第一预设数目的消息为历史消息的一部分;
所述客户端从本地获取所述第一预设数目的消息中的至少一部分消息进行显示。
第二方面,提供了一种客户端,所述客户端包括:
通信模块,用于与服务端建立通信连接;
接收模块,用于接收由服务端推送的第一预设数目的消息;
存储模块,用于将所述第一预设数目的消息保存在本地;
获取模块,用于从本地获取所述第一预设数目的消息中的至少一部分消息;
显示模块,用于显示所述第一预设数目的消息中的至少一部分消息。
第三方面,提供了一种通信系统,包括服务端以及上述第二方面所述的客户端。
在本申请实施例中,当用户更换客户端登录时,可以从服务端获取第一预设数目的消息,并将所述第一预设数目的消息保存在本地,所述第一预设数目的消息为历史消息的一部分。如此,由于第一预设数目的消息并非所有的历史消息,所占用的带宽小,且本地存储有这些消息,客户端后续即可从本地获取这些消息展示给用户,避免了当网络状况不好时,客户端完全从服务端获取所有历史消息导致的获取消息失败问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的一种消息交互方法的流程图。
图2是本申请实施例提供的另一种消息交互方法的流程图。
图3是本申请实施例提供的一种客户端的结构框图。
图4是本申请实施例提供的一种通信系统的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对上述如何解决因网络不好导致的消息同步失败的问题,本申请提出一种解决方案,旨在提供一种可以解决因网络不好导致的消息同步失败的问题的消息交互方法。
一方面,本申请实施例提供一种消息交互方法,如图1所示,所述消息交互方法可以包括:
步骤110,客户端与服务端建立通信连接。
可选地,所述客户端例如是手机、电脑等,所述服务端例如是服务器等。在上述步骤中建立客户端与服务端之间的通信连接可以是用户从客户端离线后再次在客户端上线,并建立客户端与用户端的通信连接。并且上述再次上线的客户端可以是前一次上线的客户端,也可以是另一客户端。
例如,上述建立客户端与服务端之间的通信连接可以是用户从客户端A离线后,在客户端B上线,并建立客户端B与服务端之间的通信连接;也可以是用户从客户端A离线后,再次在客户端A上线,并建立客户端A与服务端之间的通信连接。
可以理解的是,上述建立客户端与服务端的通信连接可以是为了实现客户端的用户与其他客户端的用户间的通信,也可以是为了从服务端获取历史消息。
步骤120,客户端接收由服务端推送的第一预设数目的消息,并将第一预设数目的消息保存在本地,所述第一预设数目的消息为历史消息中的一部分。
可以理解的是,在所述客户端与所述服务端建立通信连接之后,不需用户进行获取历史消息的操作,所述服务端即会主动向客户端中的所有会话推送第一预设数目的消息。所述第一预设数目的消息为历史消息中的一部分;具体地,所述第一预设数目的消息可以为所述客户端的离线消息的一部分,也可以是客户端本地消息的一部分,还可以是所述客户端的离线消息的一部分与客户端本地消息的一部分;所述客户端的离线消息表示用户在所述客户端离线后,在其他客户端发生的消息。例如,若用户从所述客户端离线后,在其他客户端发生了新消息,所述第一预设数目的消息则为所述客户端的离线消息的一部分;若用户从所述客户端离线后,在其他客户端没有发生新消息,所述第一预设数目的消息则为客户端本地消息的一部分;若用户从所述客户端离线后,在其他客户端发生了新消息,但是所述新消息的数目小于所述第一预设消息的数目,所述第一预设数目的消息则为所述客户端的离线消息的一部分与客户端本地消息的一部分。
上述步骤120中所述客户端接收由服务端推送的第一预设数目的消息,并将所述第一预设数目的消息保存在本地,则相当于进行一次服务端与客户端的第一预设数目消息的交互。所述客户端接收由服务端推送的第一预设数目的消息为所有历史消息中最后第一预设数目的消息。例如,所述第一预设数目为10,用户通过客户端在会话A中发生了10条消息(第1-10条消息)后从所述客户端离线,通过其他客户端在上述会话A中发生了40条消息(第11-50条消息),当用户再次在所述客户端上线时,所述服务端即会主动向客户端中的会话A推送用户通过其他设备在上述会话A中发生的第41-50条消息,并将所述41-50 条消息保存在本地;或者,用户通过客户端在会话A中发生了10条消息(第 1-10条消息)后从所述客户端离线,在其他客户端上线但没有在其他客户端发生新的消息,或用户从所述客户端离线后没有在其他客户端上线且在离线期间没有收到新的消息,所述服务端即会主动向客户端中的会话A推送用户通过客户端在会话A中发生的第1-10条消息。
可选地,在本申请实施例中,可以将用户首次在所述客户端登录时发生的消息的消息区间与所述客户端从所述服务端获取的消息的区间均设为可信区间,每一个可信区间为连续的消息区间,即所述可信区间中的消息均为连续的客户端本地的消息,所述可信区间的消息为可信消息。可以将用户在其他客户端发生的且没有被所述客户端从所述服务器获取的消息的区间设为不可信区间,所述不可信区间即为所述客户端本地没有的消息区间。
步骤130,客户端从本地获取第一预设数目的消息中的至少一部分消息进行显示。
可选地,上述客户端从本地获取第一预设数目的消息中的至少一部分消息进行显示表示,客户端可以从本地获取第一预设数目消息的一部分消息进行显示,客户端也可以从本地获取第一预设数目的消息进行显示。当客户端从本地获取第一预设数目的消息中的至少一部分消息进行显示后,客户端还可以响应用户的请求继续从本地获取第一预设数目的消息中剩余的未被获取的消息进行显示,所述用户请求可以是用户获取历史消息的操作请求。
通过图1所示的消息交互方法可以知道,本申请实施例的方案可以当用户更换客户端登录时,客户端接收由服务端推送的第一预设数目的消息并保存到本地数据库,然后从本地数据库获取上述第一预设消息中的至少一部分消息展示给用户,因而可以克服因网络状况不好导致的,客户端无法将历史消息显示给用户的问题。
可选地,在上述步骤120中的所述客户端接收由服务端推送的第一预设数目的消息之后,本申请实施例提供的消息交互方法还可以包括以下步骤:所述客户端将本地通信标识设置为等于所述全局通信标识;
所述客户端从本地获取所述第一预设数目的消息进行显示可以包括:在所述全局通信标识与本地通信标识相同的情况下,所述客户端从本地获取所述第一预设数目的消息中的至少一部分消息进行显示。
可选地,在客户端与服务端建立通信连接之前,还可以包括:客户端生成全局通信标识和本地通信标识,并将所述全局通信标识和本地通信标识保存在客户端。
用户通过客户端进行通信交流时,客户端中可以并存多个会话,上述步骤中的全局通信标识可表示整个客户端的通信版本的值,客户端中的所有会话可共享一个全局通信标识;本地通信标识可表示客户端中每个会话的通信版本的值。全局通信标识与本地通信标识的初始值可均为零,用户再次在同一个客户端上线,即在同一个客户端建立客户端与服务端的连接,上述全局通信标识的值则可加一。可以理解的是,当用户首次在客户端上线时,全局通信标识为零,用户再次在同一个客户端上线相当于一次客户端的全局通信版本的更新,即将上述全局通信标识的值加一。
上述将所述本地通信标识设置为等于所述全局通信标识,则表示完成一次服务端与客户端的第一预设数目的消息的交互,客户端本地已将服务端推送的第一预设数目的消息保存在本地,故客户端可直接从本地获取第一预设数目的消息中的至少一部分消息进行显示。
可选地,在上述步骤120中的所述客户端接收由服务端推送的第一预设数目的消息之后,本申请实施例提供的消息交互方法还可以包括以下步骤:
所述客户端基于所述第一预设数目的消息,确定或者更新第一消息标识和 /或第二消息标识;
其中,所述第一消息标识为客户端已接收到的目标消息序列中最后一个消息的标识,所述目标消息序列为从第一个消息的消息标识到最后一个消息的消息标识均连续的消息序列,所述目标消息序列中的第一个消息为所述客户端首次与所述服务端建立通信连接的情况下从所述服务端接收到的首个消息;所述第二消息标识为客户端最后一次与所述服务端进行交互的情况下从所述服务端获取到的消息中第一个消息的标识。
可选地,在此可以将所述第一消息标识之前的消息的区间与所述第二消息标识之后的消息的区间设为可信区间,将所述第一消息标识与所述第二消息标识之间的消息的区间设为不可信区间。
可以理解的是,当所述第一消息标识之前的消息的区间与所述第二消息标识之后的消息的区间没有重合时,所述第一消息标识是用户首次在所述客户端上线时,在所述客户端发生的最后一个消息的标识,所述第二消息标识是用户最后一次在所述客户端上线时,客户端接收由服务端推送的第一预设数目的消息并保存在本地中的第一条消息的标识。
可选地,在上述步骤中的所述客户端基于所述第一预设数目的消息,确定第二消息标识还可以包括:
所述客户端确定所述第一预设数目的消息中的指定消息,所述指定消息为所述第一预设数目的消息中标识值最小的消息;
所述客户端将所述指定消息的标识,作为第二消息标识。
可选地,在上述步骤中还可以将所述第一消息标识初始设置为0,将所述第二消息标识初始设置为空。
为了便于理解,在此举例说明:
例如,当用户A首次在所述客户端上线后,与用户B进行通信交流,当用户A与用户B的会话中没有发生消息时,所述第一消息标识为0。当在用户 A与用户B的会话中发生第一条消息时,则将所述第一消息标识确定为1;当在用户A与用户B的会话中发生第二条消息时,则更新所述第一消息标识为2;当在用户A与用户B的会话中发生第三条消息时,则更新所述第一消息标识为3...当在用户A与用户B的会话中发生第十条消息时,则更新所述第一消息标识为10...当在用户A与用户B的会话中发生第n条消息时,则更新所述第一消息标识为n。所述n条均为用户首次在所述客户端登录时发生的消息。
还例如,所述第一预设数目为10,用户A首次在客户端C上线后,在客户端C与用户B发生了10条消息后从客户端C下线,所述第一消息标识为10,再在客户端D上线并在客户端D与用户B发生了40条消息(第11-50条消息) 后从客户端D下线,再次在客户端C上线后,客户端C则接收服务器推送的所有历史消息中最后的10条消息,并将所述10条消息保存在本地,将本地通信标识设置为等于全局通信标识,进而将所述第一预设数目的消息中标识值最小的消息(即第41条消息)设置为指定消息,将所述指定消息(即第41条消息)的标识确定为第二消息标识,即将所述第二消息标识设置为41,最后客户端C在所述全局通信标识与本地通信标识相同的情况下,从本地获取所述10 条消息进行显示。可以理解的是,所述最后发生的10条消息为用户在客户端 D发生的第41-50条消息,即所述第一预设数目的消息为用户在客户端D发生的第41-50条消息。并且用户在客户端C与用户B发生的1-10条消息的区间与所述客户端C从所述服务器获取的第41-50条消息的区间为可信区间,第11 条消息与第40条消息之间的消息的区间为不可信区间。
可以理解的是,上述所有消息的标识的排序可以是按照所述服务器中的每个会话中发生的消息的时间排序,即可以是按照服务端中用户的每个完整的会话中消息发生的时间排序。
上述示例仅供用于更好地理解本申请实施例提供的消息交互方法,本申请实施例提供的消息交互方法并不限于上述示例。
可选地,在所述客户端从本地获取第一预设数目的消息进行显示之后,本申请实施例提供的消息交互方法还可以包括以下步骤:
所述客户端确定所述第一消息标识是否大于或等于所述第二消息标识;
在所述第一消息标识大于或等于所述第二消息标识的情况下,将第一消息标识设置为所述第一预设数目的消息中具有最大标识值的消息的标识,将所述第二消息标识设置为0。
可选地,在将所述第二消息标识设置为0之后,本申请实施例提供的消息交互方法还可以包括:
接收用户的历史消息操作请求;
响应于所述历史消息操作请求,所述客户端从本地获取第二预设数目的消息进行显示。
例如,所述第一预设数目为10,用户E首次在客户端G上线后,在客户端G与用户F发生了10条消息后从客户端G下线,所述第一消息标识为10,再在客户端H上线并在客户端H与用户F发生了5条消息(第11-15条消息) 后从客户端H下线,再次在客户端G上线后,客户端G则接收服务器推送的所有历史消息中最后的10条消息,并将所述10条消息保存在本地,进而将所述第一预设数目的消息中标识值最小的消息(即第5条消息)设置为指定消息,将所述指定消息(即第5条消息)的标识确定为第二消息标识,即将所述第二消息标识设置为5,最后客户端G确定全局通信标识是否与本地通信标识相同,在所述全局通信标识与本地通信标识相同的情况下,从本地获取所述10条消息进行显示。可以理解的是,所述10条消息包括客户端G本地的第5-10条消息与用户E在客户端H与用户F发生的第11-15条消息,即所述第一预设数目的消息包括客户端G本地的第5-10条消息与用户E在客户端H与用户F发生的第11-15条消息。
此时,第一消息标识为10,第二消息标识为5,所述第一消息标识大于所述第二消息标识。则将第一消息标识设置为第5-15条消息中具有最大标识值的消息的标识:15,将所述第二消息标识设置为0。于是当客户端G接收到用户E的历史消息操作请求时,客户端G会响应所述历史消息操作请求,从客户端G本地获取5条(第二预设数目)消息进行显示,即从客户端G本地获取第1-5条消息进行显示。
所述第一消息标识大于所述第二消息标识表示第一消息标识之前的消息的可信区间与所述第二消息标识之后的消息的可信区间已经重合,不可信区间的消息已全部被所述客户端获取并保存在所述客户端本地,即不需再次从服务器获取消息,故当接收到用户的历史消息操作请求时,客户端会从本地获取第二预设数目的消息进行显示。
可选地,在所述客户端从本地获取所述第一预设数目的消息进行显示之后,本申请实施例提供的消息交互方法还可以包括以下步骤:
所述客户端接收用户的历史消息操作请求;
所述客户端确定所述第一消息标识是否小于所述第二消息标识;
在所述第一消息标识小于所述第二消息标识的情况下,所述客户端从所述服务端获取第二预设数目的消息,将所述第二预设数目的消息保存在本地,并将所述第二预设数目的消息中的最小消息的标识作为所述第二消息标识;
客户端从本地获取所述第二预设数目的消息进行显示。
可选地,在所述客户端确定所述第一消息标识是否小于所述第二消息标识之前,所述客户端还可以确定所述指定消息的标识是否等于所述第二消息标识。在所述指定消息的标识等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从所述服务端获取第二预设数目的消息,将所述第二预设数目的消息保存在本地,并将所述第二预设数目的消息中的最小消息的标识作为所述第二消息标识。
可选地,上述步骤中的所述第二预设数目可以等于所述第一预设数目,也可以不等于所述第一预设数目。
可选地,所述第二预设数目的消息可以为从不可信区间中标识值最大的消息开始以时间顺序往前的第二预设数目的消息。
在上述客户端从本地获取所述第一预设数目的消息进行显示之后,用户还可以进一步在客户端上通过拉取历史消息等操作发出获取历史消息的操作请求,用户发出获取历史消息的操作请求后,所述客户端则会响应用户发出的所述操作请求,确定所述指定消息的标识是否等于所述第二消息标识。若所述指定消息的标识等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的,即所述第一预设数目的消息中标识值最小的消息为第二消息标识的消息,则说明第一消息标识与第二消息标识之间的不可信区间中的不可信消息没有全部被所述客户端获取并保存到本地,即所述指定消息之前还有不可信消息。则所述客户端从所述服务端获取第二预设数目的消息,并将所述第二预设数目的消息保存在本地,即做一次所述服务端与客户端的第二预设数目消息的消息交互,并将所述第二预设数目的消息中标识值最小的消息的标识作为所述第二消息标识,即将所述第二消息标识更新为所述第二预设数目的消息中标识值最小的消息。此后,客户端则从本地获取所述第二预设数目的消息进行显示。
为了便于理解,在此举例说明:
在上述示例的基础上,所述客户端C从本地获取第41-50条消息并进行显示后,第一消息标识为10,第二消息标识为41,所述第41-50条消息中标识值最小的消息的标识即为41,用户在客户端C发出获取历史消息的操作请求,所述客户端C则响应用户发出的所述操作请求,确定所述第一预设数目的消息中标识值最小的消息的标识是否等于第二消息标识。此时,所述第一预设数目的消息中标识值最小的消息的标识等于第二消息标识,且第一消息标识小于第二消息标识,则所述客户端从所述服务端获取5条(第二预设数目)消息,即第36-40条消息,将所述第36-40条消息保存在本地,并将所述第36-40条消息中标识值最小的消息的标识36作为所述第二消息标识。此后,客户端则从本地获取所述第36-40条消息进行显示。
此时,第一消息标识为10,第二消息标识为36,所述第二预设数目的消息中标识值最小的消息的标识即为36。当用户再次在客户端C发出获取历史消息的操作请求时,所述客户端C则再次响应用户发出的所述操作请求,确定所述第二预设数目的消息中标识值最小的消息的标识是否等于第二消息标识。此时,所述第二预设数目的消息中标识值最小的消息的标识等于第二消息标识,且第一消息标识小于第二消息标识,则所述客户端再从所述服务端获取5 条(第二预设数目)消息,即第31-35条消息,将所述第31-35条消息保存在本地,并将所述第31-35条消息中标识值最小的消息的标识31作为所述第二消息标识。此后,客户端则从本地获取所述第31-35条消息进行显示。
...
可选地,在前一次所述客户端从本地获取第二预设数目的消息进行显示之后,本申请实施例提供的消息交互方法还可以包括以下步骤:
所述客户端确定所述第一消息标识是否大于或等于所述第二消息标识;在所述第一消息标识大于或等于所述第二消息标识的情况下,所述客户端停止从所述服务端获取消息,并将第一消息标识设置为所述第一预设数目的消息中具有最大标识值的消息的标识,将所述第二消息标识设置为0。
可选地,在将所述第二消息标识设置为0之后,本申请实施例提供的消息交互方法还可以包括:
接收用户的历史消息操作请求;
响应于所述历史消息操作请求,所述客户端从本地获取第二预设数目的消息进行显示。
所述第一消息标识大于或等于所述第二消息标识则表示第一消息标识之前的消息的区间与所述第二消息标识之后的消息的区间已经重合,不可信区间的消息已全部被所述客户端获取并保存在所述客户端本地,即不需再次从服务器获取消息。
为了便于理解,在此举例说明:
在上述示例的基础上,当所述客户端C已从所述服务端获取第11-15条消息保存在本地,并且所述客户端C从本地获取所述第11-15条消息进行显示后。此时,第一消息标识为10,第二消息标识为11,所述第二预设数目消息中标识值最小的消息的标识即为11。当用户A再次在客户端C发出获取历史消息的操作请求时,所述客户端C则再次响应用户发出的所述操作请求,确定所述第二预设数目的消息中标识值最小的消息的标识是否等于第二消息标识。此时,所述第二预设数目的消息中标识值最小的消息的标识等于第二消息标识,且第一消息标识小于第二消息标识,则所述客户端C再从所述服务端获取5条消息,即第6-10条消息,将所述第6-10条消息保存在本地,并将所述第二预设数目的消息中标识值最小的消息的标识6作为所述第二消息标识。此后,客户端C则从本地获取所述第6-10条消息进行显示。此时,第一消息标识为10,第二消息标识为6。所述客户端C确定所述第一消息标识是否大于或等于所述第二消息标识,此时所述第一消息标识大于所述第二消息标识,所述客户端C 则停止从所述服务端获取消息,并将第一消息标识设置为50,将所述第二消息标识设置为0。即此时所述不可信区间的消息已全部被所述客户端C获取并保存在所述客户端C本地。于是当客户端C又一次接收到用户A的历史消息操作请求时,客户端C会响应所述历史消息操作请求,从客户端C本地获取5 条(第二预设数目)消息进行显示,即从客户端C本地获取第1-5条消息进行显示。
可选地,若用户更换客户端上线后,在其他客户端没有发生消息且重新在所述客户端上线,且所述客户端接收到用户获取历史消息的操作请求,则所述客户端直接从客户端本地获取第二预设数目的消息进行显示。
例如,在上述示例的基础上,即所述客户端C已经将用户A在其他客户端与用户B发生的第11-50条消息从服务器获取并保存到客户端C本地,本地存有第1-50条完整的历史消息,第一消息标识为50。当用户A从客户端C下线,在其他客户端没有发生消息并再次在客户端C上线后,客户端C的全局通信标识加一,客户端C则接收服务器推送的所有历史消息中最后的10条消息(第41-50条消息),并将所述10条消息保存在本地,将所述第二消息标识设置为41,最后客户端C确定全局通信标识是否与本地通信标识相同,在所述全局通信标识与本地通信标识相同的情况下,从本地获取所述第一预设数目的消息(第41-50条消息)进行显示。此时,第一消息标识为50,第二消息标识为41,所述第一消息标识大于所述第二消息标识,则将第一消息标识设置为所述第一预设数目消息中具有最大标识值的消息的标识50,将所述第二消息标识设置为0。当客户端C接收到用户获取历史消息的操作请求,则所述客户端C直接从客户端C本地获取第36-40条消息进行显示。
可选地,在另一个场景中,在所述客户端从本地获取第二预设数目的消息进行显示之后,本申请实施例提供的消息交互方法还可以包括以下步骤:
用户从某个会话退出并再次进入所述会话时,所述客户端确定所述指定消息的标识是否等于所述第二消息标识,并确定所述第一消息标识是否小于所述第二消息标识;
在所述指定消息不等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从本地获取所述第一预设数目的消息进行显示。
客户端接收到用户的历史消息操作请求,再次确定所述指定消息是否等于所述第二消息标识,所述第一消息标识是否小于所述第二消息标识;
所述指定消息为客户端从本地获取的所述第一预设数目的消息中标识值最小的消息,所述第二消息标识为所述客户端前一次从服务端获取第二预设数目的消息中的最小消息的标识;
在所述指定消息不等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从本地获取所述第二预设数目的消息进行显示,此时第二消息标识为所述客户端前一次从服务端获取第二预设数目的消息中的最小消息的标识;
在所述指定消息等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从所述服务器获取所述第二预设数目的消息进行显示。
根据上述针对本申请实施例的描述可看出,本申请实施例可以当用户更换客户端登录时,接收服务端推送的所有历史消息中的第一预设数目的消息并保存到本地数据库,然后从本地获取上述第一预设数目的消息中的至少一部分消息进行显示。当接收到用户的历史消息操作请求时,从服务端获取第二预设数目的消息保存到本地后,从本地获取所述第二预设数目的消息进行显示;或者直接从客户端本地获取第二预设数目的消息进行显示。
下面结合实际的应用场景,对本申请实施例提供的消息交互方法的进行进一步详细介绍。如图2所示,本申请实施例提供的消息交互方法可以包括如下步骤:
步骤201,客户端与服务端建立通信连接;
步骤202,客户端接收由服务端推送的第一预设数目的消息,并将第一预设数目的消息保存在本地,第一预设数目的消息为历史消息中的一部分。
步骤203,客户端基于第一预设数目的消息,确定或者更新第一消息标识和/或第二消息标识。
其中,所述第一消息标识为客户端已接收到的目标消息序列中最后一个消息的标识,所述目标消息序列为从第一个消息的消息标识到最后一个消息的消息标识均连续的消息序列,所述目标消息序列中的第一个消息为所述客户端首次与所述服务端建立通信连接的情况下从所述服务端接收到的首个消息;所述第二消息标识为客户端最后一次与所述服务端进行交互的情况下从所述服务端接收到的消息中第一个消息的标识。
步骤204,客户端从本地获取第一预设数目的消息中的至少一部分消息进行显示。
步骤205,客户端接收用户的历史消息操作请求,确定第一消息标识是否小于第二消息标识。
在所述客户端确定第一消息标识是否小于第二消息标识之前,所述客户端还可以确定指定消息的标识是否等于第二消息标识。
步骤206,在指定消息的标识等于第二消息标识且第一消息标识小于第二消息标识的情况下,客户端从服务端获取第二预设数目的消息并将第二预设数目的消息保存在本地。
步骤207,将第二预设数目的消息中标识值最小的消息的标识作为第二消息标识。
步骤208,从客户端本地获取第二预设数目的消息进行显示。
在步骤204和步骤208之后,本申请实施例提供的消息交互方法还可以包括以下步骤:
步骤209,客户端接收用户的历史消息操作请求,客户端响应于所述历史消息操作请求,客户端确定所述第一消息标识是否大于或等于所述第二消息标识。
步骤210,在第一消息标识大于或等于第二消息标识的情况下,将第一消息标识设置为第一预设数目消息中具有最大标识值的消息的标识,将第二消息标识设置为0。
步骤211,客户端接收用户的历史消息操作请求,响应于历史消息操作请求,客户端从本地获取第一预设数目的消息进行显示。
本申请实施例提供的消息交互方法,可以当用户更换客户端登录时,从服务端获取用户在其他客户端发生的第一预设数目的消息并保存到本地数据库,然后从本地数据库获取上述用户在其他客户端发生的第一预设数目的消息中的至少一部分消息进行显示,还可以响应用户获取历史消息的操作请求,再次从服务端获取用户在其他客户端发生的第二预设数目消息并保存到本地数据库,然后从本地数据库获取上述用户在其他客户端发生的第二预设数目的消息进行显示,当所述用户在其他客户端发生的所有历史消息均被获取到所述客户端并保存到所述客户端本地时,所述客户端则响应用户获取历史消息的操作请求,从所述客户端本地获取第二预设数目的消息进行显示。
由于本申请实施例提供的消息交互方法可以将所述客户端从所述服务端获取的历史消息保存到本地,所以当网络状况不好时,所述客户端可以从本地获取历史消息进行显示,而无需从服务器获取消息。并且,当用户在其他客户端发生的所有历史消息均被所述客户端获取并保存到客户端本地时,所述客户端可以从所述客户端本地获取所有的历史消息并进行显示。即使网络状况不好,用户也可以看到所有的历史消息。
与上文描述的消息交互方法相对应,本申请实施例还提供一种客户端,上文描述的消息交互方法可应用于本申请实施例提供的客户端。如图3所示,本申请实施例提供一种客户端300,包括通信模块301、接收模块302、存储模块 303、获取模块304以及显示模块305。
可选地,所述客户端300还可以包括确定模块306。
可选地,本申请实施例提供的客户端可以是软件客户端,也可以是硬件客户端。
其中,所述通信模块301用于:与服务端建立通信连接。
所述接收模块302,用于接收由服务端推送的第一预设数目的消息。
所述存储模块303,用于将所述第一预设数目的消息保存在本地。
所述获取模块304,用于从本地获取所述第一预设数目的消息中的至少一部分消息。
所述显示模块305,用于显示所述第一预设数目的消息中的至少一部分消息。
所述确定模块306还用于在所述接收模块303接收由服务端推送的第一预设数目的消息之后,将所述本地通信标识设置为等于所述全局通信标识。
可选地,所述确定模块306还用于在所述接收模块303接收由服务端推送的第一预设数目的消息之后,基于所述第一预设数目的消息,确定第一消息标识和/或第二消息标识。其中,所述第一消息标识为客户端已接收到的目标消息序列中最后一个消息的标识,所述目标消息序列为从第一个消息的消息标识到最后一个消息的消息标识均连续的消息序列,所述目标消息序列中的第一个消息为所述客户端首次与所述服务端建立通信连接的情况下从所述服务端接收到的首个消息;所述第二消息标识为客户端最后一次与所述服务端进行交互的情况下从所述服务端获取到的消息中第一个消息的标识。
可选地,所述确定模块306还用于确定所述第一消息标识是否大于或等于所述第二消息标识。在所述第一消息标识大于或等于所述第二消息标识的情况下,所述确定模块306将第一消息标识设置为所述第一预设数目的消息中具有最大标识值的消息的标识,将所述第二消息标识设置为0。
可选地,在上述确定模块306将所述第二消息标识设置为0后,所述接收模块302还用于接收用户的历史消息操作请求,响应于所述历史消息操作请求,所述获取模块304用于从本地获取第二预设数目的消息通过所述显示模块305 进行显示。
可选地,所述确定模块306在基于所述第一预设数目的消息,确定第一消息标识和/或第二消息标识中用于:确定所述第一预设数目的消息中的指定消息,所述指定消息为所述第一预设数目的消息中标识值最小的消息,将所述指定消息的标识,作为第二消息标识。
可选地,在所述获取模块304从本地获取所述第一预设数目的消息通过所述显示模块305进行显示之后,所述接收模块302还用于接收用户的历史消息操作请求,所述确定模块306用于确定所述第一消息标识是否小于所述第二消息标识,在所述第一消息标识小于所述第二消息标识的情况下,所述获取模块 304从所述服务端获取第二预设数目的消息,所述存储模块303将所述第二预设数目的消息保存在本地,所述确定模块306还用于确定全局通信标识是否与本地通信标识相同,在所述全局通信标识与所述本地通信标识相同的情况下,所述获取模块304从客户端本地获取所述第二预设数目的消息后所述显示模块305将所述第二预设数目的消息进行显示,所述确定模块306将所述第二预设数目的消息中的最小消息的标识作为所述第二消息标识。
可选地,所述确定模块306还用于将所述第一消息标识初始设置为0,将所述第二消息标识初始设置为空。
需了解的是,上文描述的消息交互方法可应用于本申请实施例提供的客户端,故而这里针对客户端的内容可参照上文方法部分的描述。
此外,如图4所示,本申请实施例还提供一种通信系统400,该通信系统 400包括:服务端401和上述客户端300。通过以上的实施方式的描述,本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (6)
1.一种消息交互方法,其特征在于,所述方法包括:
客户端与服务端建立通信连接;
所述客户端接收由服务端推送的第一预设数目的消息,并将所述第一预设数目的消息保存在本地,所述第一预设数目的消息为历史消息的一部分;
客户端基于第一预设数目的消息,确定或者更新第一消息标识和/或第二消息标识;
所述客户端从本地获取所述第一预设数目的消息中的至少一部分消息进行显示;
客户端接收用户的历史消息操作请求,确定第一消息标识是否小于第二消息标识;
在所述客户端确定第一消息标识是否小于第二消息标识之前,所述客户端还确定指定消息的标识是否等于第二消息标识;
在指定消息的标识等于第二消息标识且第一消息标识小于第二消息标识的情况下,客户端从服务端获取第二预设数目的消息并将第二预设数目的消息保存在本地;
将第二预设数目的消息中标识值最小的消息的标识作为第二消息标识;
从客户端本地获取第二预设数目的消息进行显示;
用户从某个会话退出并再次进入所述会话时,所述客户端确定所述指定消息的标识是否等于所述第二消息标识,并确定所述第一消息标识是否小于所述第二消息标识;
在所述指定消息不等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从本地获取所述第一预设数目的消息进行显示;
客户端接收到用户的历史消息操作请求,再次确定所述指定消息是否等于所述第二消息标识,所述第一消息标识是否小于所述第二消息标识;
所述指定消息为客户端从本地获取的所述第一预设数目的消息中标识值最小的消息,所述第二消息标识为所述客户端前一次从服务端获取第二预设数目的消息中的最小消息的标识;
在所述指定消息不等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从本地获取所述第二预设数目的消息进行显示,此时第二消息标识为所述客户端前一次从服务端获取第二预设数目的消息中的最小消息的标识;
在所述指定消息等于所述第二消息标识且所述第一消息标识小于所述第二消息标识的情况下,所述客户端从所述服务端获取所述第二预设数目的消息进行显示;
其中,所述第一消息标识为客户端已接收到的目标消息序列中最后一个消息的标识,所述目标消息序列为从第一个消息的消息标识到最后一个消息的消息标识均连续的消息序列,所述目标消息序列中的第一个消息为所述客户端首次与所述服务端建立通信连接的情况下从所述服务端接收到的首个消息;所述第二消息标识为客户端最后一次与所述服务端进行交互的情况下从所述服务端获取到的消息中第一个消息的标识。
2.根据权利要求1所述的消息交互方法,其特征在于,在所述客户端接收由服务端推送的第一预设数目的消息之后,所述方法还包括:
所述客户端将所述本地通信标识设置为等于全局通信标识;
所述客户端从本地获取所述第一预设数目的消息进行显示包括:在所述全局通信标识与本地通信标识相同的情况下,所述客户端从本地获取所述第一预设数目的消息中的至少一部分消息进行显示。
3.根据权利要求1所述的消息交互方法,其特征在于,所述方法还包括:
所述客户端确定所述第一消息标识是否大于或等于所述第二消息标识;
在所述第一消息标识大于或等于所述第二消息标识的情况下,将第一消息标识设置为所述第一预设数目的消息中具有最大标识值的消息的标识,将所述第二消息标识设置为0。
4.根据权利要求3所述的消息交互方法,其特征在于,在将所述第二消息标识设置为0之后,所述方法还包括:
接收用户的历史消息操作请求;
响应于所述历史消息操作请求,所述客户端从本地获取第二预设数目的消息进行显示。
5.一种客户端,用于实现权利要求1-4任一项所述的方法,其特征在于,所述客户端包括:
通信模块,用于与服务端建立通信连接;
接收模块,用于接收由服务端推送的第一预设数目的消息;
存储模块,用于将所述第一预设数目的消息保存在本地;
获取模块,用于从本地获取所述第一预设数目的消息中的至少一部分消息;
显示模块,用于显示所述第一预设数目的消息中的至少一部分消息。
6.一种通信系统,其特征在于,包括服务端以及根据权利要求5所述的客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011537960.3A CN112737921B (zh) | 2020-12-23 | 2020-12-23 | 消息交互方法、客户端及通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011537960.3A CN112737921B (zh) | 2020-12-23 | 2020-12-23 | 消息交互方法、客户端及通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112737921A CN112737921A (zh) | 2021-04-30 |
CN112737921B true CN112737921B (zh) | 2022-07-29 |
Family
ID=75604718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011537960.3A Active CN112737921B (zh) | 2020-12-23 | 2020-12-23 | 消息交互方法、客户端及通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112737921B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338807B (zh) * | 2021-12-30 | 2023-12-22 | 紫光云(南京)数字技术有限公司 | 一种主机overlay下的消息排序机制 |
CN114051054A (zh) * | 2022-01-13 | 2022-02-15 | 深圳市赢向量科技有限公司 | 一种采用无线通信网络进行信息获取的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104811366A (zh) * | 2014-01-26 | 2015-07-29 | 阿里巴巴集团控股有限公司 | 一种网络通讯消息的漫游方法及装置 |
CN105471716A (zh) * | 2015-12-17 | 2016-04-06 | 网易(杭州)网络有限公司 | 实现跨客户端消息同步的方法、用户设备及服务器 |
CN109885604A (zh) * | 2019-01-22 | 2019-06-14 | 平安科技(深圳)有限公司 | 聊天消息展示方法、电子装置及计算机可读存储介质 |
CN110086704A (zh) * | 2014-02-11 | 2019-08-02 | 阿里巴巴集团控股有限公司 | 一种即时通讯未读消息的同步方法和系统 |
CN110191193A (zh) * | 2019-06-12 | 2019-08-30 | 广州吱呀网络科技有限公司 | 一种终端消息同步方法、装置和移动终端 |
-
2020
- 2020-12-23 CN CN202011537960.3A patent/CN112737921B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104811366A (zh) * | 2014-01-26 | 2015-07-29 | 阿里巴巴集团控股有限公司 | 一种网络通讯消息的漫游方法及装置 |
CN110086704A (zh) * | 2014-02-11 | 2019-08-02 | 阿里巴巴集团控股有限公司 | 一种即时通讯未读消息的同步方法和系统 |
CN105471716A (zh) * | 2015-12-17 | 2016-04-06 | 网易(杭州)网络有限公司 | 实现跨客户端消息同步的方法、用户设备及服务器 |
CN109885604A (zh) * | 2019-01-22 | 2019-06-14 | 平安科技(深圳)有限公司 | 聊天消息展示方法、电子装置及计算机可读存储介质 |
CN110191193A (zh) * | 2019-06-12 | 2019-08-30 | 广州吱呀网络科技有限公司 | 一种终端消息同步方法、装置和移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN112737921A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3525410B1 (en) | Account login method, apparatus, and server | |
CN112737921B (zh) | 消息交互方法、客户端及通信系统 | |
US11191111B2 (en) | Bluetooth connection establishment method, device and system | |
CN107104923B (zh) | 一种账号绑定和业务处理的方法及装置 | |
CN112131504B (zh) | 一种网页编辑、展示方法、装置、设备以及存储介质 | |
CN110971757B (zh) | 从电话应用中添加微信好友的方法及装置、设备、介质 | |
US11057483B2 (en) | User tracking method, server, and client | |
CN106375360B (zh) | 一种图数据更新方法、装置及系统 | |
CN114040020A (zh) | 跨集群服务调用的方法及系统 | |
CN113206877A (zh) | 一种会话保持方法及装置 | |
CN111431730A (zh) | 一种业务处理方法、系统、计算机设备及可读介质 | |
CN114363334B (zh) | 云系统及云桌面虚拟机的网络配置方法、装置及设备 | |
WO2013119456A1 (en) | Retrieving availability information from published calendars | |
CN106599045B (zh) | 一种请求发送方法及装置 | |
CN106878252B (zh) | 建立免密登录关系的方法、清除账号的方法及其装置 | |
CN110535966B (zh) | 一种数据处理方法及相关设备 | |
CN112612848B (zh) | 数据实时同步的方法及装置、系统、电子设备、存储介质 | |
CN113612851A (zh) | 远程连接方法及装置、存储介质和处理器 | |
CN112507193A (zh) | 数据更新方法、装置、设备和存储介质 | |
CN107004232B (zh) | 服务管理方法 | |
CN112769824B (zh) | 一种信息传输状态更新方法、终端、装置及存储介质 | |
CN115484316B (zh) | 一种共享文件的方法和装置 | |
CN113973089B (zh) | 一种流媒体传输方法、系统、设备及存储介质 | |
CN112866174B (zh) | 终端接入认证方法及其系统 | |
CN114553861B (zh) | 文件传输方法及装置、存储介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |