The invention relates to the field of communication technology, and discloses a message pushing method and a device. The invention will be sent to the client in advance of the message is stored in the shared memory, push message, multiple processes simultaneously from shared memory read messages and read messages to the corresponding client; shared memory read speed read faster than the database, coupled with multiple processes simultaneously read and send messages, so the efficiency can enhance the message push. The invention relates to a shared memory reads the message from the speed to the shared memory is stored in the message, the message has been classified, each client of each process can be ascertained from the shared memory block to send query messages, so you can narrow the search range, avoid each client from all the messages in the search required the news.
【技术实现步骤摘要】
消息推送方法及装置
本专利技术涉及通信
,特别涉及一种消息推送方法及装置。
技术介绍
消息推送技术随着移动互联网的迅速发展应运而生。消息推送技术是指,针对用户对信息的特定需求,有目的性的将信息主动推送到用户。通常采用服务器-客户机制,由服务器主动将信息推送给客户端。因此,推送技术实际上就是把信息自动送到用户面前的技术,即实现“信息找用户”。现有技术中,要实现某一时刻给所有在线用户推送彼此不同的实时消息,可以用单进程对所有用户进行遍历,通过实时计算得到针对每个用户需要发送的消息并发送,也可以事先计算好要发送给用户的消息并存储在数据库(Database)中,发送时针对每个用户从数据库中读取要发送的消息进行发送。现有的方案在性能上可以进一步提高,实时计算需要发送的消息内容,虽然可以免去存储所有用户待发送的消息内容的存储消耗,但需要耗费一定的时间,影响用户接收到消息的时效性。事先计算每个用户待发送的消息内容并存储于数据库中可以避免实时计算消息内容的时间消耗,但同时增加了从数据库读取消息内容的时间,对于用户接收消息时效性的影响取决于实时计算消息内容的时长和从数据库读取消息内容的时长。通过单进程遍历所有用户时,当用户数量很大时,遍历耗时将逐渐增大,后推送的消息达到用户的时效性越差。而终端用户对推送消息的准确性和及时性有着强烈的要求,但是现有技术中并不能实现对消息正常、及时地推送。
技术实现思路
本专利技术提供了一种消息推送方法及装置,基于共享内存及多进程技术,通过多进程同时从共享内存读取消息并推送给客户端,解决了消息推送不及时的问题,实现了高效、实时的消息推送。本专 ...
【技术保护点】
一种消息推送方法,其特征在于,包括:获取推送消息和客户端ID;确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中;当到达消息推送时间时,各进程同时从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端。
【技术特征摘要】
1.一种消息推送方法,其特征在于,包括:获取推送消息和客户端ID;确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中;当到达消息推送时间时,各进程同时从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端。2.根据权利要求1所述的方法,其特征在于,在所述获取推送消息和客户端ID之前,还包括:建立多个进程,每个进程连接多个客户端;获取连接在各进程上的客户端的客户端ID,建立客户端ID与该客户端ID所属进程的进程ID之间的映射关系;为每个进程分配一共享内存块;建立进程的进程ID与该进程对应的共享内存块的共享内存块ID之间的映射关系。3.根据权利要求1或2所述的方法,其特征在于,所述确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中,包括:根据客户端ID与进程ID的映射关系,查找所述客户端ID对应的进程ID;根据进程ID与共享内存块ID的映射关系,查找所述进程ID对应的共享内存块ID,将所述推送消息和客户端ID存入与该共享内存块ID对应的共享内存块中。4.根据权利要求1所述的方法,其特征在于,所述进程从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端,包括:逐条读取共享内存块中的推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端,直至将共享内存块中所有的推送消息都推送给相应的客户端。5.根据权利要求1所述的方法,其特征在于,所述进程从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端,包括:获取连接在进程上的客户端的客户端ID;从进程对应的共享内存块中读取与所述客户端ID对应的推送消息,将所述推送消息发送至与所述客户端ID对应的客户端;判断所述客户端ID是否为最后一个客户端ID,若是,结束推送消息的推送,若否,对下一个客户端进行推送消息的推送。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:如果从进程对应的共享内存块中没有读取到与所述客户端ID对应的推送消息,则判断所述客户端ID是否为最后一个客户端ID,若是,结束推送消息的推送,若否,对下...
【专利技术属性】
技术研发人员:张俊生,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。