一种即时通讯处理群发上线、下线消息的方法和装置制造方法及图纸

技术编号:27825602 阅读:19 留言:0更新日期:2021-03-30 11:06
本发明专利技术涉及一种即时通讯处理群发上线、下线消息的方法和装置。该方法的步骤包括:将用户的上线消息、下线消息传递到即时通讯服务中;即时通讯服务将上线消息、下线消息存入对应的上线缓存队列、下线缓存队列中;随机启动线程,获取当前时间点的上线缓存队列、下线缓存队列中的上线消息、下线消息,根据消息的内容对消息进行合并;将合并后的消息群发到此时在线的用户。本发明专利技术克服了现有即时通讯系统处理群发消息时的性能瓶颈,减少了消息在即时通讯系统中各个系统之间扩散的数量,降低了扩散系数,减少了扩散消息给即时通讯系统中各个系统带来的影响,从而降低了后台服务器的压力。从而降低了后台服务器的压力。从而降低了后台服务器的压力。

【技术实现步骤摘要】
一种即时通讯处理群发上线、下线消息的方法和装置


[0001]本专利技术涉及通讯
,具体为一种即时通讯处理群发上线、下线消息的方法和装置。

技术介绍

[0002]即时通讯(Instant Messenger,简称IM)技术自面世以来得到迅速发展,功能日益丰富,因其拥有实时、高效、低成本等多种优势,迅速被大众认可,普及。
[0003]即时通讯系统的核心是消息的处理,当用户上、下线时会短时间内产生大量的需要群发的消息。例如,此时有一万用户在线,新登录或下线一个用户需要对这一万用户进行通知此人上、下线的消息,此时会有一万条消息在服务器系统中流转,扩散系数为一万,服务器逐个处理这些消息需要花费一定的性能和时间。
[0004]为了处理群发消息的情况,目前存在以下几种解决方案:
[0005]方案一:客户端定时请求,主动去服务端拉取消息。这种方案如果时间段内上下线用户较少,产生的群发消息较少,定时拉取消息容易造成服务器“空耗”,增加了服务器压力。
[0006]方案二:不处理用户状态,所有用户不区分在线、离线等状态。这种方案不区分用户状态,无法识别接收消息用户是否可实时响应,会影响一些重要场合时用户的体验。
[0007]方案三:当服务器压力较大时,丢弃部分消息。这种方案一些重要消息可能会丢失,用户体验极差。
[0008]方案四:限制通讯录中用户数。这种方案在某些公司适用,但仅控制用户数无法对服务器资源得到很好的利用,浪费服务器资源。

技术实现思路

[0009]为了克服现有即时通讯系统处理群发消息时的性能瓶颈,本专利技术提供一种即时通讯处理群发上线、下线消息的方法,在兼顾消息实时与服务器压力的同时提升群发消息的处理效率。
[0010]本专利技术解决其技术问题所采用的技术方案是:
[0011]一种即时通讯处理群发上线、下线消息的方法,包括以下步骤:
[0012]将用户的上线消息、下线消息传递到即时通讯服务中;
[0013]即时通讯服务将上线消息、下线消息存入对应的上线缓存队列、下线缓存队列中;
[0014]随机启动线程,获取当前时间点的上线缓存队列、下线缓存队列中的上线消息、下线消息,根据消息的内容对消息进行合并;
[0015]将合并后的消息群发到此时在线的用户。
[0016]进一步地,所述上线消息、下线消息中封装以下内容:
[0017]MessageType:消息类型,用于存储本条消息具体的业务类型;
[0018]Code:操作结果,用于区分操作是否正常返回,携带反馈结果代码;
[0019]Operate:操作类型,用于区分同一类消息的不同操作;
[0020]SendUser:消息发送方,存储消息发送方信息;
[0021]ReceiveUser:消息接收方,存储消息接收方信息;
[0022]Description:文本消息,用于存储用户的聊天内容;
[0023]Dict:集合对象,用于存储用户其他的业务需要使用到的参数。
[0024]进一步地,所述将用户的上线消息、下线消息传递到即时通讯服务中,包括:
[0025]用户在不同的会话场景中输入消息,发送至即时通讯系统;
[0026]通过数据校验系统校验消息的数据,数据校验包括:数据头信息校验,数据解密校验,来源校验;
[0027]将校验后的消息发送至消息I/O系统中,消息I/O系统使用选择器监听多个通道的事件,在某个通道接收到消息后从缓冲区中取出消息,根据消息标识从服务工厂中取出相应的服务,并将消息传入到该服务中;
[0028]根据服务中的消息进行具体的业务处理,消息处理完成后重新写入消息I/O系统;
[0029]消息I/O系统经过数据校验的加密处理重新将消息通过长链接直接返回给客户端。
[0030]进一步地,基于国密算法对传输的消息进行加密,服务收到消息后依据秘钥解析消息,反馈客户端时将消息重新加密传输,以增加安全性。
[0031]进一步地,所述根据服务中的消息进行具体的业务处理,其业务处理流程包括按消息实体解析消息、获取消息内容、结合具体业务处理消息、封装返回的消息。
[0032]进一步地,所述获取当前时间点的上线缓存队列、下线缓存队列中的上线消息、下线消息,包括:对获取的上线缓存队列、下线缓存队列加同步锁,获取缓存队列中的消息放入线程的局部变量后,将对应的缓存队列的数据置空,然后释放锁。
[0033]进一步地,所述根据消息的内容对消息进行合并,包括:
[0034]将一段时间内同一用户发出的多次上线消息、下线消息合并为一次;
[0035]将要发给同一用户的上线消息、下线消息进行合并,一个用户这段时间内仅收到一次上线消息、下线消息;
[0036]如果一段时间内有同一用户上线并下线,则将该用户的上线消息、下线消息去除。
[0037]一种采用上述方法的即时通讯处理群发上线、下线消息的装置,其包括:
[0038]即时通讯消息处理模块,用于将用户的上线消息、下线消息传递到即时通讯服务中,并将上线消息、下线消息存入对应的上线缓存队列、下线缓存队列中;
[0039]消息合并模块,用于随机启动线程,获取当前时间点的上线缓存队列、下线缓存队列中的上线消息、下线消息,根据消息的内容对消息进行合并;
[0040]消息发送模块,用于将合并后的消息群发到此时在线的用户。
[0041]本专利技术的有益效果是:将需要群发的消息通过缓存队列缓存起来,通过预先制定的消息体解析消息,消息体指上述由MessageType、Code、Operate、SendUser、ReceiveUser、Description、Dict组成的消息封装,将可合并的消息按实际业务逻辑合并起来,将重复发送的消息处理组合成一条消息,将需要多次发送给用户的消息组合成一条消息,消息内容大时还支持将消息压缩处理,通过线程池随机的将合并后的消息群发给用户。由于发送的消息数量变少,发送消息的次数变少,在系统之间的流转也变少,从而大大减少了消息在即
时通讯系统中各个系统之间扩散的数量,大大降低了扩散系数,减少了扩散消息给即时通讯系统中各个系统带来的影响,从而降低了后台服务器的压力。
附图说明
[0042]图1为本专利技术提供的一种即时通讯消息处理时序图;
[0043]图2为本专利技术提供的群发消息处理原理图。
具体实施方式
[0044]下面结合附图和实例对本专利技术作进一步的详细说明。此处所描述的具体实施方式仅用于解释本专利技术,为了便于描述,附图中仅展示出了与本专利技术相关的部分而非全部结构。
[0045]本专利技术提供了一种即时通讯消息封装方式,应用于即时通讯系统中,该消息封装方式封装的内容包括:
[0046]MessageType:消息类型,用于存储本条消息具体的业务类型;
[0047]Code:操作结果,用于区分操作是否正常返回,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种即时通讯处理群发上线、下线消息的方法,其特征在于,包括以下步骤:将用户的上线消息、下线消息传递到即时通讯服务中;即时通讯服务将上线消息、下线消息存入对应的上线缓存队列、下线缓存队列中;随机启动线程,获取当前时间点的上线缓存队列、下线缓存队列中的上线消息、下线消息,根据消息的内容对消息进行合并;将合并后的消息群发到此时在线的用户。2.根据权利要求1所述的方法,其特征在于,所述上线消息、下线消息中封装以下内容:MessageType:消息类型,用于存储本条消息具体的业务类型;Code:操作结果,用于区分操作是否正常返回,携带反馈结果代码;Operate:操作类型,用于区分同一类消息的不同操作;SendUser:消息发送方,存储消息发送方信息;ReceiveUser:消息接收方,存储消息接收方信息;Description:文本消息,用于存储用户的聊天内容;Dict:集合对象,用于存储用户其他的业务需要使用到的参数。3.根据权利要求1所述的方法,其特征在于,所述将用户的上线消息、下线消息传递到即时通讯服务中,包括:用户在不同的会话场景中输入消息,发送至即时通讯系统;通过数据校验系统校验消息的数据,数据校验包括:数据头信息校验,数据解密校验,来源校验;将校验后的消息发送至消息I/O系统中,消息I/O系统使用选择器监听多个Channel通道的事件,在某个Channel通道接收到消息后从缓冲区中取出消息,根据消息标识从服务工厂中取出相应的服务,并将消息传入到该服务中;根据服务中的消息进行具体的业务处理,消息处理完成后重新写入消息I/O系统;消息I/O系统经过数据校验的加密处理重新将消息通过长链接直接返回给客户端。4.根据权利要求3所述的方法,其特征在于,基于国密算法对传输的消息进行加密,服务收到消息后依据秘钥解析消息,反馈客户端时...

【专利技术属性】
技术研发人员:郭家鑫焦晓武王伟东刘志波贾大玮王金生尉明
申请(专利权)人:中国软件与技术服务股份有限公司
类型:发明
国别省市:

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

1