CN111953580B - 一种会话发送、会话获取的方法、装置和存储介质 - Google Patents
一种会话发送、会话获取的方法、装置和存储介质 Download PDFInfo
- Publication number
- CN111953580B CN111953580B CN202010689434.2A CN202010689434A CN111953580B CN 111953580 B CN111953580 B CN 111953580B CN 202010689434 A CN202010689434 A CN 202010689434A CN 111953580 B CN111953580 B CN 111953580B
- Authority
- CN
- China
- Prior art keywords
- session
- version information
- list
- data
- 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.)
- 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]
- H04L51/046—Interoperability with other network applications or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供一种会话发送、会话获取方法、装置和存储介质,该方法包括:获取客户端发出的会话获取请求中携带的第一请求标识;其中,第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;若第一会话列表版本信息不是客户端初次启动对应的版本信息,则对第一会话列表版本信息与第二会话列表版本信息进行对比;根据对比结果发送对应的至少部分会话分页。能够根据实际需求进行相应会话数据更新,按照会话分页更新的方式进行分批次的会话数据更新,能够有效避免同时大批量更新导致的更新缓慢的问题,避免影响用户体验。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种会话发送、会话获取的方法、装置和存储介质。
背景技术
即时通讯(Instant messaging,简称IM)是一个终端服务,允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频交流。即时通讯按使用用途分为企业即时通讯和个人即时通讯,根据通讯对象又分好友即时通讯、陌生人即时通讯和同事即时通讯等。
目前市场主流即时通讯产品有:微信、QQ、钉钉、企业微信、slack、line 等。即时通讯产品属于CS(client和server的简称)架构,都有一个客户端 (client)程序(包括移动端、桌面客户端,本文中都简称为app)和服务器 (server)程序(本文中都简称为server)。不同产品在即时通讯的会话列表的同步机制也是尽不相同,主要有用户登录app后,server推送(或app拉取)一段时间内的会话数据,将这个时间段内的数据都是全量同步到app本地。目前已有多种方案,存在如下情况:比如,本地不保存会话数据,每次都从server端分页同步拉取方案;比如,每次登陆只同步最近一段时间内的会话数据;比如, APP每次和server比对差异化更新方案。
发明内容
本发明实施例提供一种会话发送、会话获取方法、装置和存储介质,用以实现满足及时快速获取所需会话数据的需求。
第一方面,本发明实施例提供一种会话发送方法,该方法包括:
获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
根据对比结果发送对应的至少部分会话分页。
可选地,获取客户端发出的会话获取请求中携带的请求标识之后,还包括:
若所述第一会话列表版本信息为所述客户端初次启动对应的版本信息,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
可选地,所述根据对比结果发送对应的至少部分会话分页,包括:
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
若所述第一会话列表版本信息与所述第二会话列表版本信息不同,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
可选地,还包括:发送所述第二会话列表版本信息、第二会话数据版本信息给所述客户端。
可选地,根据对比结果发送对应的至少部分会话分页之后,还包括:
获取所述客户端发出的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;
确定对应会话数据的第一已读会话分页标识;
若所述第一已读会话分页标识与所述第二已读会话分页标识不同,则发送与所述当前已读分页相邻的已读会话分页。
第二方面,本发明实施例提供一种会话获取方法,该方法包括:
发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的。
可选地,发送携带有第一请求标识的会话获取请求给服务端之后,还包括:
若所述第一会话列表版本信息为初次启动对应的版本信息,则接收所述服务端提供的置顶会话数据、未读会话数据和部分已读会话数据。
可选地,所述若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页,包括:
若所述第一会话列表版本信息不是初次启动对应的版本信息,则获取所述服务端对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比结果;
若所述对比结果为不同,则接收置顶会话数据、未读会话数据和部分已读会话数据。
可选地,还包括:根据接收到的所述第二会话列表版本信息和第二会话数据版本信息,并对所述第一会话列表版本信息和所述第一会话数据信息进行更新。
可选地,接收至少部分会话分页之后,还包括:
发送的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;
若所述服务端对应会话数据的第一已读会话分页标识与所述第二已读会话分页标识不同,则接收与所述当前已读分页相邻的已读会话分页。
第三方面,本发明实施例提供一种会话发送装置,该装置包括:
获取模块,用于获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定模块,用于确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
对比模块,用于若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
发送模块,用于根据对比结果发送对应的至少部分会话分页。
第四方面,本发明实施例提供一种会话获取装置,该装置包括:
发送模块,用于发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
接收模块,用于若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的。
第五方面,本发明实施例提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器执行包括以下的动作:
获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
根据对比结果发送对应的至少部分会话分页。
第六方面,本发明实施例提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器执行包括以下的动作:
发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的。
本发明实施例中,为了便于对会话数据的管理,实现更好的会话数据同步,利用会话列表版本信息对会话列表的更新记录进行标记,利用会话数据版本信息对会话数据更新记录进行标记。根据不同的会话列表版本信息、不同的会话数据版本信息进行相对应的至少部分会话分页更新。通过上述技术方案,能够根据实际需求进行相应会话数据更新,按照会话分页更新的方式进行分批次的会话数据更新,能够有效避免同时大批量更新导致的更新缓慢的问题,避免影响用户体验。同时,即便本地的历史会话数据被删除,也可以根据会话数据版本信息和/或已读会话分页标识获取到所需历史会话数据,无需在本地存储,减轻客户端存储负担,满足用户对历史会话数据的查阅需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例会话系统的结构示意图;
图2为本申请实施例提供的一种会话发送方法的流程示意图;
图3为本申请实施例提供的一种会话获取方法的流程示意图;
图4为本申请实施例举例说明一种会话获取过程的流程示意图;
图5为本申请实施例举例说明另一种会话获取方法的流程示意图;
图6为本申请实施例提供的一种会话发送装置的结构示意图;
图7为本申请实施例提供的一种会话获取装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
如图1为本申请实施例会话系统的结构示意图。在该会话系统中,可以包含有多个客户端APP,这些客户端APP与连接服务器通信连接。连接服务器通过消息会话服务与存储DB连接。也就是,所有会话数据都会存储在存储DB当中,当客户端发出某一获取请求之后,存储DB会发送对应的用户所需的会话数据,避免批量发送或发送用户不需要的数据,能够避免数据发送缓慢等相关问题。这里所说的会话数据是指每一个聊天消息会话的数据信息。会话列表,是许多会话数据组成的集合。会话数据,会实时变动,位置不是固定的。会话数据有几个属性:会话名称(聊天的对象)、未读计数、最近一条消息时间、最近一条消息部分内容。会话列表是按照一定规则进行顺序排序的。会话列表的顺序会受到每个会话数据的最后一条消息时间和置顶标识两个因素影响。
图2为本申请实施例提供的一种会话发送方法的流程示意图。该方法的执行主体可以是服务端。如图2所示,该方法包括以下步骤:
201:获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种。
202:确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息。
203:若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
204:根据对比结果发送对应的至少部分会话分页。
在实际应用中,各类客户端(比如,手机客户端、电脑客户端)都会存储其当前具有的最新的第一会话列表版本信息,以及在会话列表中的各个会话数据版本信息。若客户端与服务端保持连接关系,则客户端的第一会话列表版本信息将会与服务端的第二会话列表版本信息保持相同,且第一会话数据版本信息与第二会话数据版本信息保持相同。若在使用过程中,客户端与服务端断开连接,则客户端将保存在断开之前的最后一个版本的第一会话列表版本信息和第一会话数据版本信息;而服务端则会根据实际情况进行实时更新。
假设,客户端在与服务端断开连接之后,现在需要重新建立连接。则服务端在接收到第一请求标识,然后对第一请求标识进行解析得到第一会话列表版本信息和/或第一会话数据版本信息等。
在服务端所存储的信息有很多种,用于满足各种监控更新需求。例如:消息会话存储在数据库(DB)中,具有包含如下信息的会话数据表(conversation):
{
Uint64 sid,//每个会话的操作id,每次变动都更新,该id是实时顺序生成的唯一id
Uint64 peer_id,//会话对方id,聊天对象
Uint32 del_flag,//删除标识
Uint32 count,//未读计数
Uint32 time,//消息时间
Uint32 top,//置顶标识
Uint64msgid,//最后消息id,显示的消息的id,所有消息id也都是顺序生成的唯一id
String msg,//最后一条消息部分内容
}
这对每个用户的会话列表版本信息的版本更新,需要一个总的会话列表版本信息比对,用户的会话版本表(user_conversation)部分伪代码设计:
{
Uint64 uc,//每次用户的会话列表中有数据变更,都会触发这个会话列表版本信息uc自增+1
}
所有影响会话的操作,都会对server端会话数据存储带来变更:
1、会话的置顶和取消置顶,conversation中操作sid实时生成更新,置顶状态top更新;user_conversation中uc+1。
2、删除会话,conversation中操作sid实时生成更新,删除标识del_flag 更新;user_conversation中uc+1。
3、新消息,conversation中操作sid实时生成更新,未读计数count更新,消息时间更新,最后消息ID msgid更新,最后消息内容msg更新,删除标识 del_flag更新;user_conversation中uc+1。
4、标记已读未读,conversation中操作sid实时生成更新,未读计数count 更新;user_conversation中uc+1。
需要说明的是,客户端与服务端建立连接的情况不同,所得到第一请求标识也不同。这里所说的建立连接的方式包括客户端初次启动的时候建立连接,非初次启动的时候建立连接。下面,将分情况进行举例说明。
一种连接情况:若所述第一会话列表版本信息为所述客户端初次启动对应的版本信息,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
判断客户端初次启动的方式是,判断第一会话列表版本信息是否为 client_uc=0,若是,则表示客户端第一次启动。
例如,根据client_uc=0,判断出客户端本地无任何数据,此时获取所置顶会话和所有未读会话;再根据会话中的msgid倒序,获取未读计数等于0的N条已读会话数据,具体N的数值根据实际页面所能显示数量确定的,目的是为了保证当前客户端页面上能够同时显示置顶会话数据、未读会话数据和部分已读会话数据;再获取server端的uc,将获取的所有会话数据和uc一起返回给客户端app,以便客户端能够及时更新会话数据版本信息和会话列表版本信息。
本申请方案是只拉取了所有置顶会话和只有未读的会话和部分少量最新时间的已读会话,若是会话数据较多,较早时间有会话未读,这两个数据量会差异很大。另外若是置顶会话和未读会话特别多,还可以采用分包推送机制返回。
另一种连接情况:若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;若所述第一会话列表版本信息与所述第二会话列表版本信息不同,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
非首次登陆时,此时client_uc不等于0,app向server发送请求,server 返回增量会话数据,即差异化会话数据。
Server接收到的app的请求参数:client_uc和max_sid,此时client_uc和 max_sid都是不等于0的,有本地的历史数值。server的返回所有变更的增量会话数据。此外,服务端还会发送所述第二会话列表版本信息、第二会话数据版本信息给所述客户端。
例如,服务端先判断client_uc是否等于server uc,若是相等,则app本地数据和server数据相同,无增量更新,无返回会话数据,即app本地已是最新数据。若是不相等,此时在查询所有sid>max_sid的所有会话数据,这些会话数据就是增量的会话数据;将serveruc(也就是服务端的uc)和获取的会话数据一起返回给客户端,进而客户端也将更新本地uc与server uc一致。
作为一可选实施例,所述根据对比结果发送对应的至少部分会话分页,包括:若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;若所述第一会话列表版本信息与所述第二会话列表版本信息相同,且所述第一会话数据版本信息与所述第二会话数据版本信息不同,则发送所述第二会话数据版本信息对应的一页最新会话分页给所述客户端。
作为一可选实施例,在实际应用中,有些历史消息还是有观看需求的。比如,某人客户端的存储容量很有限,则客户端会自动或者提醒用户手动删除一些历史会话数据。还有些情景是当用户可以通过多个客户端(手机的客户端、计算机的客户端)获取信息,但是由于一端没登录,需要从历史会话数据中拉去所需数据。具体来说,根据对比结果发送对应的至少部分会话分页之后,还包括:获取所述客户端发出的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;确定对应会话数据的第一已读会话分页标识;若所述第一已读会话分页标识与所述第二已读会话分页标识不同,则发送与所述当前已读分页相邻的已读会话分页。
图3为本申请实施例提供的一种会话获取方法的流程示意图,如图3所示,该方法包括以下步骤:
301:发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种。
302:若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的。
作为一可选实施例,客户端发送携带有第一请求标识的会话获取请求给服务端之后,还包括:若所述第一会话列表版本信息为初次启动对应的版本信息,则接收所述服务端提供的置顶会话数据、未读会话数据和部分已读会话数据。
例如,客户端app的请求参数:client_uc=0,max_sid=0,此时是初始化数据。进而,客户端接到服务端的返回结果:所有置顶会话、所有未读会话和部分已读。其中部分已读可设为N条,看各产品一页会话列表最多显示的条数,控制大于一页的显示数量即可,目的是保证在没有置顶和没有未读会话时,能有一页会话数据的返回(一般在10-20条之间,不会很大)。根据client_uc=0,判断出客户端本地无任何数据,此时获取所置顶会话和所有未读会话;再根据会话中的msgid倒序,获取未读会话计数等于0的N条已读会话数据;再获取 server端的uc,将获取的所有会话数据和uc一起返回给app。在客户端接收完数据后,为了保证一致性,将server的uc赋值给client_uc,并最大的会话操作id (sid)赋值给max_sid,已读会话列表中的最小msgid赋值给client_msgid。
作为一可选实施例,所述若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页,包括:若所述第一会话列表版本信息不是初次启动对应的版本信息,则获取所述服务端对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比结果;若所述对比结果为不同,则接收置顶会话数据、未读会话数据和部分已读会话数据。
此外,为了确保各个客户端会话相关信息与服务端一致,在对会话数据进行更新的时候,也需要对相应的版本信息进行更新,比如,根据接收到的所述第二会话列表版本信息和第二会话数据版本信息,并对所述第一会话列表版本信息和所述第一会话数据信息进行更新。
例如,非首次登陆时,此时client_uc不等于0,app向server发送请求, server返回增量会话数据,即差异化会话数据。其中,app的请求参数:client_uc 和max_sid,此时client_uc和max_sid都是不等于0的,有本地的历史数值。 server返回所有变更的增量会话数据,server将判断client_uc是否等于server uc,若是相等,则app本地数据和server数据相同,无增量更新,无返回会话数据,即app本地已是最新数据。若是不相等,此时在查询所有sid>max_sid的所有会话数据,这些会话数据就是增量的会话数据;将server uc和获取的会话数据一起返回给app。更新会话数据,另外用server最大的会话操作id(sid)赋值给本地max_id。用于下次请求使用。
作为一可选实施例,接收至少部分会话分页之后,还包括:发送的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;若所述服务端对应会话数据的第一已读会话分页标识与所述第二已读会话分页标识不同,则接收与所述当前已读分页相邻的已读会话分页。
例如,此种情况下,app已经获取了所有的未读会话、所有置顶会话,用户需要看很早之前的会话,这类会话的特点是都是已读的会话,此时根据首次登陆返回的已读会话中的最小的msgid(client_msgid)来分页查询获取消息会话。 app的请求参数:client_msgid,server将查询msgid,并进行对比发现 msgid<client_msgid,且未读计数count=0,获取指定分页数的会话数据,返回给app。app收到回包后:更新会话数据,并将分页返回的最小msgid赋值给本地的client_msgid。用于下次分页请求使用。
若用户各个客户端在线,实时更新。服务端都会socket连接实时通知到各客户端,进行会话相关数据更新,此时实时在线收到的消息通知,客户端本地的client_uc、max_sid、client_msgid都无任何更新,本地只需要根据会话列表的排序规则进行排序。
通过上述方案,所有会话数据不丢失。而且每次客户端登陆,客户端都可以获取到所有的未读计数的会话。在客户端需要获取大数据量的情况下,每次请求的数据量都不大,且都是必须要显示使用的。此外,用户的所有历史消息可以通过分页拉取,而且不区分客户端设备,可多个客户端端同步一致。
如图4为本申请实施例举例说明一种会话获取过程的流程示意图。包括如下步骤:
在S401步骤中,用户登录app。
在S402步骤中,获取app本地的client_uc和max_sid,在这里app不需要区分是首次登陆还是非首次登陆,只需要获取本地的client_uc即可。若是首次登陆app,本地client_uc必等于0,server会根据实际传参进行判断。
在S403步骤中,server判断client_uc是否等于0,即判断app是否是首次登陆。
在S404步骤中,是首次登陆,此时server获取所有置顶会话数据。
在S405步骤中,server获取所有未读会话数据(不包括置顶的未读)。
在S406步骤中,server根据msgid倒序获取部分已读会话数据。
在S407步骤中,server获取server uc。
在S408步骤中,server将获取的会话数据合并和server uc返回app。
在S409步骤中,app更新本地client_uc(用server uc替换)、client_msgid (用server返回的已读会话的最小msgid替换)、max_sid(用server返回的会话数据中最大的sid替换)。
在S140步骤中,由于S403判断不是首次登录app,需要先获取server uc。
在S411步骤中,判断client_uc和server uc是否相等,如果相等,表示app 和server会话数据一致性,不需要更新操作。
在S412步骤中,由于server有数据更新,此时获取所有大于client_sid的会话数据,即是增量更新的会话数据。
在S413步骤中,server将获取的增量会话数据和server uc返回给app。
在S414步骤中,app更新本地client_uc(用serveruc替换)、max_id(用 server返回的会话数据中最大的sid替换)。
综上,S404-S409是首次登陆的app的情况下的操作流程;S140-S414是非首次登陆app的情况下的操作流程。
此外,用户的所有会话列表数据都是按照操作记录的形式存储在服务器,用户登录客户端,服务器就推送操作记录,从客户端本地记录的操作id往后推送,一直推送到当前最新的会话操作。若是推送量太多,可进行分包部分推送。
如图5为本申请实施例举例说明另一种会话获取方法的流程示意图。包括如下步骤:
在S501步骤中,用户分页获取历史消息会话。前提是经过未读会话同步之后,本实施例中需要获取会话都是已读的会话。
在S502步骤中,app传参client_msgid,同步获取历史消息会话。
在S503步骤中,server获取根据msgid倒序排序,msgid小于client_msgid 的消息会话数据,并返回给app。
在S504步骤中,app更新本地client_msgid(用户分页返回中的消息会话的 msgid最小的替换)。
基于图4、图5实施例可知,首次登陆app,保证app的首页置顶的显示,未读能全部返回,用户可以快速查收所有的未读,同时,还保证拉取的数据量是最小化的,不会出现app卡顿的情况,不会出现首次登陆加载显示过长的问题。后续使用app,消息会话数据增量更新,只更新必要的,有数据变更的才会从服务器同步,做到按需同步。支持拉取所有历史消息会话数据,且不存在任何的性能上的问题。支持所有设备云端同步,保证各端app消息会话数据无差异,数据一致性。
如图6为本申请实施例提供的一种会话发送装置的结构示意图。所述装置包括:
获取模块61,用于获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定模块62,用于确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
对比模块63,用于若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
发送模块64,用于根据对比结果发送对应的至少部分会话分页。
所述获取模块61还用于:若所述第一会话列表版本信息为所述客户端初次启动对应的版本信息,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
所述发送模块64,用于若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;所述第一会话列表版本信息与所述第二会话列表版本信息不同,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
所述发送模块64,还用于:发送所述第二会话列表版本信息、第二会话数据版本信息给所述客户端。
还包括:获取所述客户端发出的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;确定对应会话数据的第一已读会话分页标识;若所述第一已读会话分页标识与所述第二已读会话分页标识不同,则发送与所述当前已读分页相邻的已读会话分页。
如图7为本申请实施例提供的一种会话获取装置的结构示意图。应用于客户端,所述装置包括:
发送模块71,用于发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
接收模块72,用于若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的。
发送模块71,用于若所述第一会话列表版本信息为初次启动对应的版本信息,则接收所述服务端提供的置顶会话数据、未读会话数据和部分已读会话数据。
接收模块72,用于若所述第一会话列表版本信息不是初次启动对应的版本信息,则获取所述服务端对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比结果;
若所述对比结果为不同,则接收置顶会话数据、未读会话数据和部分已读会话数据。
接收模块72,还用于根据接收到的所述第二会话列表版本信息和第二会话数据版本信息,并对所述第一会话列表版本信息和所述第一会话数据信息进行更新。
还包括:发送的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;若所述服务端对应会话数据的第一已读会话分页标识与所述第二已读会话分页标识不同,则接收与所述当前已读分页相邻的已读会话分页。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质。当计算机可读存储介质存储计算机程序,且计算机程序被一个或多个处理器执行时,致使一个或多个处理器执行相应图2所示方法实施例中的各步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质。当计算机可读存储介质存储计算机程序,且计算机程序被一个或多个处理器执行时,致使一个或多个处理器执行相应图3所示方法实施例中的各步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程更新设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM) 和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种会话发送方法,其特征在于,应用于服务端,所述方法包括:
获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
根据对比结果发送对应的至少部分会话分页;
所述根据对比结果发送对应的至少部分会话分页,包括:
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
若所述第一会话列表版本信息与所述第二会话列表版本信息不同,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
2.根据权利要求1所述的方法,其特征在于,获取客户端发出的会话获取请求中携带的请求标识之后,还包括:
若所述第一会话列表版本信息为所述客户端初次启动对应的版本信息,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
3.根据权利要求1所述的方法,其特征在于,还包括:发送所述第二会话列表版本信息、第二会话数据版本信息给所述客户端。
4.根据权利要求1所述的方法,其特征在于,根据对比结果发送对应的至少部分会话分页之后,还包括:
获取所述客户端发出的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;
确定对应会话数据的第一已读会话分页标识;
若所述第一已读会话分页标识与所述第二已读会话分页标识不同,则发送与所述当前已读分页相邻的已读会话分页。
5.一种会话获取方法,其特征在于,应用于客户端,所述方法包括:
发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的;
所述若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页,包括:
若所述第一会话列表版本信息不是初次启动对应的版本信息,则获取所述服务端对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比结果;
若所述对比结果为不同,则接收置顶会话数据、未读会话数据和部分已读会话数据。
6.根据权利要求5所述的方法,其特征在于,发送携带有第一请求标识的会话获取请求给服务端之后,还包括:
若所述第一会话列表版本信息为初次启动对应的版本信息,则接收所述服务端提供的置顶会话数据、未读会话数据和部分已读会话数据。
7.根据权利要求5所述的方法,其特征在于,还包括:根据接收到的所述第二会话列表版本信息和第二会话数据版本信息,并对所述第一会话列表版本信息和所述第一会话数据信息进行更新。
8.根据权利要求5所述的方法,其特征在于,接收至少部分会话分页之后,还包括:
发送的携带有第二请求标识的历史会话获取请求;其中所述第二请求标识为用于表示所述客户端会话数据的当前已读会话分页第二已读会话分页标识;
若所述服务端对应会话数据的第一已读会话分页标识与所述第二已读会话分页标识不同,则接收与所述当前已读分页相邻的已读会话分页。
9.一种会话发送装置,其特征在于,应用于服务端,所述装置包括:
获取模块,用于获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定模块,用于确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
对比模块,用于若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
发送模块,用于根据对比结果发送对应的至少部分会话分页;
所述根据对比结果发送对应的至少部分会话分页,包括:
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
若所述第一会话列表版本信息与所述第二会话列表版本信息不同,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
10.一种会话获取装置,其特征在于,应用于客户端,所述装置包括:
发送模块,用于发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
接收模块,用于若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的;
所述若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页,包括:
若所述第一会话列表版本信息不是初次启动对应的版本信息,则获取所述服务端对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比结果;
若所述对比结果为不同,则接收置顶会话数据、未读会话数据和部分已读会话数据。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器执行包括以下的动作:
获取客户端发出的会话获取请求中携带的第一请求标识;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
确定表示最新会话列表版本的第二会话列表版本信息,和表示各会话数据版本的第二会话数据版本信息;
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
根据对比结果发送对应的至少部分会话分页;
所述根据对比结果发送对应的至少部分会话分页,包括:
若所述第一会话列表版本信息不是所述客户端初次启动对应的版本信息,则对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比;
若所述第一会话列表版本信息与所述第二会话列表版本信息不同,则发送置顶会话数据、未读会话数据和部分已读会话数据给所述客户端。
12.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器执行包括以下的动作:
发送携带有第一请求标识的会话获取请求给服务端;其中,所述第一请求标识包含第一会话列表版本信息、第一会话数据版本信息中至少一种;
若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页;其中,所述至少部分会话分页是基于所述服务端将标识最新会话列表版本的第二会话列表版本信息与所述第一会话列表版本信息对比后确定的;
所述若所述第一会话列表版本信息不是初次启动对应的版本信息,则接收至少部分会话分页,包括:
若所述第一会话列表版本信息不是初次启动对应的版本信息,则获取所述服务端对所述第一会话列表版本信息与所述第二会话列表版本信息进行对比结果;
若所述对比结果为不同,则接收置顶会话数据、未读会话数据和部分已读会话数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010689434.2A CN111953580B (zh) | 2020-07-17 | 2020-07-17 | 一种会话发送、会话获取的方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010689434.2A CN111953580B (zh) | 2020-07-17 | 2020-07-17 | 一种会话发送、会话获取的方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111953580A CN111953580A (zh) | 2020-11-17 |
CN111953580B true CN111953580B (zh) | 2022-07-26 |
Family
ID=73340019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010689434.2A Active CN111953580B (zh) | 2020-07-17 | 2020-07-17 | 一种会话发送、会话获取的方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111953580B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7617283B2 (en) * | 2005-01-10 | 2009-11-10 | International Business Machines Corporation | System and method for instant messaging |
KR20150008957A (ko) * | 2013-06-27 | 2015-01-26 | 삼성전자주식회사 | 단말 및 그 단말에서 어플리케이션 업데이트 방법 |
CN105634801A (zh) * | 2015-12-25 | 2016-06-01 | 北京奇虎科技有限公司 | 更新数据的方法及装置 |
CN105657049B (zh) * | 2016-02-26 | 2019-03-15 | 北京皮尔布莱尼软件有限公司 | 一种增量数据同步方法、装置和移动终端 |
CN106603713B (zh) * | 2016-12-29 | 2020-09-22 | 深圳Tcl新技术有限公司 | 会话管理方法和系统 |
CN109697100A (zh) * | 2018-12-29 | 2019-04-30 | 天津字节跳动科技有限公司 | 会话消息显示处理方法和装置 |
CN110401709A (zh) * | 2019-07-23 | 2019-11-01 | 北京云中融信网络科技有限公司 | 一种即时通讯应用中会话的处理方法、装置和存储介质 |
CN110493122B (zh) * | 2019-08-29 | 2022-01-28 | 北京拉勾网络技术有限公司 | 一种会话信息的同步方法、装置、计算设备及存储介质 |
-
2020
- 2020-07-17 CN CN202010689434.2A patent/CN111953580B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111953580A (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2608190C2 (ru) | Система и способ для синхронизации контактной информации | |
US8600363B2 (en) | Synchronization in unified messaging systems | |
CN108881354B (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
CN109818848B (zh) | 会话的展示方法和装置、存储介质、电子装置 | |
WO2013056172A1 (en) | Automatically aggregating contact information | |
CA2805194A1 (en) | Methods and apparatus for automated workflow management | |
US8719357B2 (en) | Method and apparatus for managing message | |
EP2869532B1 (en) | Service apparatus and method for providing deferred message, and storage medium | |
CN111245748A (zh) | 文件传输方法及装置、系统、电子设备、存储介质 | |
CN115004673B (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN112052247A (zh) | 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质 | |
CN106470150B (zh) | 关系链存储方法及装置 | |
CN111538563A (zh) | 一种对Kubernetes的事件分析方法及装置 | |
CN110673833A (zh) | 应用于程序化广告投放的信息管理系统及广告投放平台 | |
CN111884843B (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
CN113259139B (zh) | 一种创建群组方法及装置 | |
US11544119B2 (en) | Business rules processing framework for implementing new desired functionality in a telecommunication application | |
CN111460038A (zh) | 一种数据准实时同步方法及装置 | |
US20190379753A1 (en) | Intelligently delivering notifications including summary of followed content and related content | |
CN111953580B (zh) | 一种会话发送、会话获取的方法、装置和存储介质 | |
CN112838980A (zh) | 一种消息处理方法、系统、装置、电子设备及存储介质 | |
CN112995266A (zh) | 一种信息推送方法及相关设备 | |
CN114928610A (zh) | 数据更新的通知方法、数据处理方法、装置、设备和介质 | |
CN109213955B (zh) | 数据处理方法及相关设备 | |
CN112612848A (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 |