本发明涉及互联网,特别涉及一种离线消息的处理方法与系统。
背景技术:
1、在现在很多系统或者app中,都存在使用消息推送这样的功能。而实际情况是,一般app系统的客户端数量会达到几十上百万之多。如此多的app每一个均需要与服务器保持有一个长连接,这样就有几十上百万的长连接连接到服务器上。同时,已建立长连接的app需要每隔一定时间发送心跳包给服务器,由服务端来明确该个app设备是否已经断线的标识。
2、在这种存在几十万到几百万的长连接连接到服务器的情况,就已经会给服务器带来了很大的压力了。由于手机客户端的网络情况不稳定,经常会出现断网,上网,或者网络切换等等网络上的问题,造成推送消息存在在线推送和离线推送两种情况。当网络稳定时通道建立,手机客户端在线,进行消息的在线推送。当断网或者其他情况,通道未成功建立,则表示手机客户端不在线,服务端保持离线消息,待客户端下次上线时,进行离线消息的发送。
3、此时,存在一种情况。当服务器重启时,大量的离线用户连接上来,均需要获取自己的离线消息,会给服务端带来很大的压力,导致再次宕机。或者服务器某一时间段,突然间有很多的离线用户上线,导致用户大量请求离线消息,服务器压力变大导致宕机。
技术实现思路
1、本发明所要解决的技术问题是:提供一种离线消息的处理方法与系统,可有效减少服务器压力,减少宕机的情况。
2、为了解决上述技术问题,本发明采用的技术方案为:
3、一种离线消息的处理方法,包括步骤:
4、s1、服务端通过消息队列记录客户端的离线消息获取请求,并启动预设个数的消息处理线程;
5、s2、所述消息处理线程从消息队列中获取所述离线消息获取请求,并获取所述离线消息获取请求关联的离线消息,实时监测服务端与客户端的长连接是否空闲,仅在长连接空闲时进行离线消息的发送;
6、s3、客户端对服务端发送的在线消息进行即时展示,并在收到离线消息时根据时序信息对离线消息与页面中的在线消息进行重新排列后展示。
7、为了解决上述技术问题,本发明采用的另一种技术方案为:
8、一种离线消息的处理系统,包括服务端与客户端,所述服务端包括第一处理器、第一存储器以及存储在所述第一存储器中并可在所述第一处理器上运行的第一计算机程序,所述客户端包括第二处理器、第二存储器以及存储在所述第二存储器中并可在所述第二处理器上运行的第二计算机程序,所述第一处理器执行所述第一计算机程序时实现以下步骤:
9、s1、通过消息队列记录客户端的离线消息获取请求,并启动预设个数的消息处理线程;
10、s2、所述消息处理线程从消息队列中获取所述离线消息获取请求,并获取所述离线消息获取请求关联的离线消息,实时监测服务端与客户端的长连接是否空闲,仅在长连接空闲时进行离线消息的发送;
11、所述第二处理器执行所述第二计算机程序时实现以下步骤:
12、s3、对服务端发送的在线消息进行即时展示,并在收到离线消息时根据时序信息对离线消息与页面中的在线消息进行重新排列后展示。
13、本发明的有益效果在于:本发明的一种离线消息的处理方法与系统,对于客户端的离线消息获取请求,通过消息队列进行记录,并由预设个数的消息处理线程依据消息队列进行处理,降低服务端的并发压力,且仅在长连接空闲时进行离线消息的发送,避免循环发送离线消息导致正常的在线消息堵塞,客户端对在线消息进行实时展示,并在收到离线消息后根据消息时序重新排列,避免历史的离线消息的延时发送导致与实时的在线消息发生展示时序错乱的情况。
1.一种离线消息的处理方法,其特征在于,包括步骤:
2.根据权利要求1所述的一种离线消息的处理方法,其特征在于,所述步骤s1之前还包括步骤:
3.根据权利要求1所述的一种离线消息的处理方法,其特征在于,所述步骤s1之前还包括步骤:
4.根据权利要求1所述的一种离线消息的处理方法,其特征在于,客户端与服务端之间设有消息中间件,所述消息队列位于所述消息中间件中,客户端的所述离线消息获取请求发送至所述消息中间件,服务端通过消息中间件的消息队列记录所述离线消息获取请求,并由消息处理线程从所述消息中间件的消息队列中获取客户端的所述离线消息获取请求。
5.一种离线消息的处理系统,包括服务端与客户端,所述服务端包括第一处理器、第一存储器以及存储在所述第一存储器中并可在所述第一处理器上运行的第一计算机程序,所述客户端包括第二处理器、第二存储器以及存储在所述第二存储器中并可在所述第二处理器上运行的第二计算机程序,其特征在于,所述第一处理器执行所述第一计算机程序时实现以下步骤:
6.根据权利要求5所述的一种离线消息的处理系统,其特征在于,所述第一处理器执行所述第一计算机程序时所述步骤s1之前还包括步骤:
7.根据权利要求5所述的一种离线消息的处理系统,其特征在于,所述第一处理器执行所述第一计算机程序时所述步骤s1之前还包括步骤:
8.根据权利要求5所述的一种离线消息的处理系统,其特征在于,客户端与服务端之间设有消息中间件,所述消息队列位于所述消息中间件中,客户端的所述离线消息获取请求发送至所述消息中间件,服务端通过消息中间件的消息队列记录所述离线消息获取请求,并由消息处理线程从所述消息中间件的消息队列中获取客户端的所述离线消息获取请求。