一种即时通讯离线消息推送方法技术

技术编号:27278759 阅读:12 留言:0更新日期:2021-02-06 11:45
本发明专利技术涉及一种即时通讯离线消息推送方法,包括以下步骤:客户端打开,向服务器发送该客户端收到的最后一条消息的时间,即消息的同步点;服务器收到该同步点后,从同步库(即存储消息的数据库)中查询到该用户同步点之后的所有消息,用户收发的消息会保存到同步库中;对查询到的消息根据聊天会话进行分类;统计每个聊天会话的未读数数量,将超过设定条数的离线消息的聊天会话去掉,只保留最后设定条数的离线消息;将离线消息进行封装简化整理成一条消息返回给客户端,每个聊天会话包括未读数量、聊天会话对象的Id、该聊天会话对象最后一条消息;客户端收到离线消息后解析。客户端收到离线消息后解析。客户端收到离线消息后解析。

【技术实现步骤摘要】
一种即时通讯离线消息推送方法


[0001]本专利技术涉及信息处理
,具体涉及一种即时通讯离线消息推送方法。

技术介绍

[0002]推送离线消息目前主流的方法是推送所有消息,这种方法当消息量大时,如果加载全部离线消息,会造成客户端的消息轰炸,造成客户端卡顿。另外现有的(传统的)离线消息推送是一条条推送的且是基于timelime模型的,这样可能会造成客户端消息列表页的跳动,另外,基于timelime模型的消息同步库需要客户端发送消息同步点,当应用在卸载重装时会丢失同步点,导致离线消息不能成功推送到客户端,甚至丢失。

技术实现思路

[0003]本专利技术目的在于提供一种即时通讯离线消息推送方法,针对现有技术的所有缺点,采用一次性推送离线消息的方案,客户端可以只需要解析一条离线消息,界面无需重复刷新,直接显示最后的界面。具体的,针对离线消息过大的问题,采用每个对话框最多只推送若干条(此数量可通过系统配置,假定为N条),加上每个对话框的未读消息数量,用户如需查询更早信息,可以向服务器请求更早的数据。
[0004]为了解决以上技术问题,本专利技术通过以下技术方案得以实现:本专利技术提供一种即时通讯离线消息推送方法,包括以下步骤:
[0005](1)客户端打开,向服务器发送该客户端收到的最后一条消息的时间,即消息的同步点;
[0006](2)服务器收到该同步点后,从同步库(即存储消息的数据库)中查询到该用户同步点之后的所有消息,用户收发的消息会保存到同步库中;
[0007](3)对查询到的消息根据聊天会话进行分类;
[0008](4)统计每个聊天会话的未读数数量,将超过设定条数的离线消息的聊天会话去掉,只保留最后设定条数的离线消息;即统计每个聊天会话的未读消息数量,只保留设定的N条离线消息;
[0009](5)将离线消息进行封装简化整理成一条消息返回给客户端,每个聊天会话包括未读数量、聊天会话对象的Id、该聊天会话对象最后一条消息;
[0010](6)客户端收到离线消息后解析,每个聊天会话只解析最后设定条数,未读数已经给出,直接展示每个聊天会话对象有多少个未读,当用户点击聊天会话框时显示最后的离线消息。
[0011]优选的,所述的设定条数为20条(此数量可通过系统配置)。
[0012]进一步的,所述客户端为PC设备、安卓设备或ios设备。
[0013]再进一步的,所述同步库的数据库为elasticsearch数据库,即存储消息的数据库。
[0014]再进一步的,所述的离线消息指该客户端离线之后所有未接收的消息(包括未读
或者在其他端已读的消息)。
[0015]再进一步的,处理离线消息的方法为:
[0016]1)、使用elasticsearch的bool查询,根据range时间点进行过滤查到同步点之后所有消息;query":{"bool":{"must":{"match\":{"sourceUid":"+uid+"}},"+""filter":{"range\":{"longtime\":{"gt":"+time+"}
[0017]2)、解析消息,将每条消息封装成聊天会话对象chaPojo;
[0018]3)、判断聊天会话数组中是否有该对象,offer到一个LimitQueue队列中,该队列最大数量为N、始终保留最后N条消息(N可设置,优选为20条);
[0019]即进一步的,该队列最大数量为20、始终保留最后20条消息;
[0020]4)、如果解析的消息是未读,即readed为1,则将聊天会话的unreandCoun t+1;
[0021]5)、将封装好的消息转换成对应客户端可解析的数据格式。
[0022]本专利技术的技术效果:
[0023](1)本专利技术改进了现有技术一条一条拉取离线消息的弊端,客户端无需重复刷新用户界面,一次性加载最终需要显示的界面,提升了客户端性能。
[0024](2)本专利技术改进了现有技术推送所有离线消息的方法,提供了一种对话框最后N条(N可设置,优选为20条)设加上对话框未读消息数量的方法,降低了消息的传输量,为用户设备降低了流量,用户可按需拉取更早时间的离线消息。
[0025](3)本专利技术提供了一种卸载重装不会丢失消息列表和消息未读数量的方法,解决了现有技术通常是备份客户端的本地数据,并导入到新设备上,如果出现设备故障的话,可能丢失掉所有数据的问题。本专利技术不仅提供了完整的消息列表,还提供了对话框的未读数量,给用户一种没有卸载重装的体验感。
附图说明
[0026]图1为本专利技术方案有同步点时读取离线消息流程图;
[0027]图2为本专利技术方案首次安装无同步点时读取离线消息流程图。
具体实施方式
[0028]以下将配合附图来详细说明本专利技术的实施方式。
[0029]本专利技术的一种即时通讯离线消息推送方法,具体方案步骤:
[0030](1)客户端打开,向服务器发送该客户(终)端收到的最后一条消息的时间,即消息的同步点;
[0031](2)(IM)服务器收到该同步点后,从同步库(即存储消息的数据库)中查询到该用户同步点之后的所有消息,用户收发的消息会保存到同步库中;
[0032](3)对查询到的消息根据聊天会话(即聊天对象)进行分类;
[0033](4)统计每个聊天会话的未读数数量,只保留设定的N条离线消息;
[0034]进一步的,N=20,即将超过20条离线消息的聊天会话去掉,只保留最后20条离线消息;
[0035](5)将离线消息进行封装简化整理成一条消息返回给客户端,每个聊天会话包括未读数量、聊天(会话)对象的Id、该聊天(会话)对象最后一条消息;
[0036](6)客户端在收到离线消息后进行解析,每个聊天会话只解析最后N条消息,未读数已经给出,直接展示每个聊天会话对象有多少条未读,当用户点击聊天会话框时显示最后的离线消息。
[0037]进一步的,每个聊天会话只解析最后20条。
[0038]整理离线消息的算法方案:
[0039]1).使用elasticsearch的bool查询,根据range时间点进行过滤查到同步点之后所有消息;query":{"bool":{"must":{"match\":{"sourceUid":"+uid+"}},"+""filter":{"range\":{"longtime\":{"gt":"+time+"}
[0040]2).解析消息,将每条消息封装成聊天会话对象chaPojo;
[0041]3).判断聊天会话数组中是否有该对象,offer到一个LimitQueue队列中,该队列最大数量为N、始终保留最后N条消息(N可设置,优选为20条);
[0042]即该队列最大数量为20、始终保留最后20条消息;
[0043]4).如果解析的消息是未读,即readed为1,则将聊天会话的u本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种即时通讯离线消息推送方法,其特征在于,包括以下步骤:(1)客户端打开,向服务器发送该客户端收到的最后一条消息的时间,即消息的同步点;(2)服务器收到该同步点后,从同步库中查询到该用户同步点之后的所有消息,用户收发的消息会保存到同步库中;(3)对查询到的消息根据聊天会话进行分类;(4)统计每个聊天会话的未读数数量,将超过设定条数的离线消息的聊天会话去掉,只保留最后设定条数的离线消息;(5)将离线消息进行封装简化整理成一条消息返回给客户端,每个聊天会话包括未读数量、聊天会话对象的Id、该聊天会话对象最后一条消息;(6)客户端收到离线消息后解析,每个聊天会话只解析最后设定条数,未读数已经给出,直接展示每个聊天会话对象有多少个未读,当用户点击聊天会话框时显示最后的离线消息。2.根据权利要求1所述的一种即时通讯离线消息推送方法,其特征在于:所述的设定条数为20条。3.根据权利要求2所述的一种即时通讯离线消息推送方法,其特征在于:所述客户端为PC设备、安卓设备或ios设备。4.根据权利要求2所述的一种即时通讯离线消息推送方法...

【专利技术属性】
技术研发人员:刘超群
申请(专利权)人:合肥市智享亿云信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1