CN104144098B - 消息推送方法、系统及推送服务器设备 - Google Patents
消息推送方法、系统及推送服务器设备 Download PDFInfo
- Publication number
- CN104144098B CN104144098B CN201310165603.2A CN201310165603A CN104144098B CN 104144098 B CN104144098 B CN 104144098B CN 201310165603 A CN201310165603 A CN 201310165603A CN 104144098 B CN104144098 B CN 104144098B
- Authority
- CN
- China
- Prior art keywords
- connection
- message
- push server
- application
- push
- 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
Abstract
本发明公开了一种消息推送方法、系统及推送服务器设备,属于通信技术领域。所述方法包括:推送服务器设备接收应用服务器发送的消息;所述消息中包括所述应用的标识;所述推送服务器设备根据所述应用的标识,确定所述应用对应的连接;所述连接为移动终端与所述推送服务器之间基于用户和所述应用的连接;所述推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。本发明通过采用上述技术方案。实现不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种消息推送方法、系统及推送服务器设备。
背景技术
随着移动通讯技术的发展,出现一种以推送(Push)方式传输消息的消息传输技术。消息推送技术主要是利用Push技术主动地、有目的地向用户推送消息。
移动通信技术中的两大职能平台为苹果公司的苹果操作系统(Iphone OrationSystem;IOS)平台和谷歌公司的安卓(Android)平台。这两大平台都有自己的消息Push服务。苹果的IOS平台的消息Push服务为苹果推送通知服务(Apple Push NotificationService)。谷歌的android平台的消息Push服务包括Cloud to Device Messaging(简称C2DM)服务;C2DM服务允许第三方开发者开发相关的应用来推送少量数据消息(1024bytes)到用户的移动终端上的。谷歌的Android平台的消息Push服务还包括谷歌的云推送消息服务(Google Cloud Messaging;简称GCM)服务,该GCM服务是之前的C2DM服务的升级。且IOS平台和Android平台的Push服务器都设置在美国,当向美国之外的其他国家区域的用户推送消息的时候均需要跨越跨国网络来实现。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:现有的IOS平台和Android平台的Push推送服务器必须基于平台的类型进行消息推送服务,导致消息推送方式较为单一,使用不灵活。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种消息推送方法、系统及推送服务器设备。所述技术方案如下:
一方面,提供了一种消息推送方法,所述方法包括:
推送服务器设备接收应用服务器发送的消息;所述消息中包括所述应用的标识;
所述推送服务器设备根据所述应用的标识,确定所述应用对应的连接;所述连接为移动终端与所述推送服务器之间基于用户和所述应用的连接;
所述推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
可选地,如上所述的消息推送方法中,所述推送服务器设备接收应用服务器发送的消息之后,所述推送服务器设备根据所述应用的标识,获取所述应用对应的连接之前,还包括:
所述推送服务器设备判断并确定存在推送所述消息的连接。
可选地,如上所述的消息推送方法中,所述推送服务器设备判断并确定存在推送所述消息的连接,包括:
所述推送服务器设备判断全局哈希映射表中是否存在包括所述应用的标识的映射关系;所述映射关系为所述用户的标识、所述应用的标识和所述移动终端的标识的对应关系;
当所述全局哈希映射表中包括所述应用的标识的映射关系,所述推送服务器设备确定存在推送所述消息的连接,否则,所述推送服务器设备确定不存在推送所述消息的连接。
可选地,如上所述的消息推送方法中,还包括:
当所述推送服务器设备确定不存在推送所述消息的连接时,所述推送服务器设备将所述消息存储在数据中心设备中;
所述方法进一步还包括:
当所述推送服务器设备确定存在推送所述消息的连接时,所述推送服务器设备从所述数据中心设备中提取所述消息;
所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
可选地,如上所述的消息推送方法中,所述推送服务器设备向所述移动终端推送消息,包括:
所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消息,包括:
所述推送服务器设备的工作线程,通过所述连接向所述连接对应的所述移动终端推送所述消息。
可选地,如上所述的消息推送方法中,所述推送服务器设备的工作线程,通过所述连接向所述连接对应的所述移动终端推送所述消息之前,还包括:
所述推送服务器设备的接入线程监听并接收所述移动终端发起的基于所述用户和所述应用的连接,并将所述连接压入所述推送服务器设备的工作线程的连接队列中;
所述推送服务器设备的工作线程从所述连接队列中获取所述连接,并将所述连接存入所述全局哈希映射表中。
可选地,如上所述的消息推送方法中,所述推送服务器设备的工作线程从所述连接队列中获取所述连接之后,还包括:
所述推送服务器设备的工作线程将所述连接存入所述工作线程的链接表中;
进一步地,所述方法还包括:
所述推送服务器设备的工作线程定期轮询所述链接表中的所述连接;
所述推送服务器设备的工作线程检查所述连接是否过期或者所述连接是否正常;
当所述连接过期或者所述连接不正常,所述推送服务器设备的工作线程删除所述连接;
所述推送服务器设备的工作线程删除所述全局哈希映射表中所述连接对应的映射关系。
可选地,如上所述的消息推送方法中,还包括:
所述推送服务器设备的主线程预先创建所述推送服务器设备的工作线程和所述推送服务器设备的接入线程。
另一方面,提供了一种推送服务器设备,所述设备包括:
接收模块,用于接收应用服务器发送的消息;所述消息中包括所述应用的标识;
处理模块,用于根据所述应用的标识,确定所述应用对应的连接;所述连接为移动终端与所述推送服务器之间基于用户和所述应用的连接;所述处理模块,还用于通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
可选地,如上推送服务器设备中,所述处理模块,还用于在所述接收模块接收应用服务器发送的消息之后,所述处理模块根据所述应用的标识,获取所述应用对应的连接之前,判断并确定存在推送所述消息的连接。
可选地,如上推送服务器设备中,所述处理模块,所述处理模块,具体用于判断全局哈希映射表中是否存在包括所述应用的标识的映射关系;所述映射关系为所述用户的标识、所述应用的标识和所述移动终端的标识的对应关系;当所述全局哈希映射表中包括所述应用的标识的映射关系,确定存在推送所述消息的连接,否则,确定不存在推送所述消息的连接。
可选地,如上推送服务器设备中,所述处理模块,还用于当确定不存在推送所述消息的连接时,将所述消息存储在数据中心设备中;
所述处理模块,还用于当所述推送服务器设备确定存在推送所述消息的连接时,从所述数据中心设备中提取所述消息,并通过所述连接向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
可选地,如上推送服务器设备中,所述处理模块,包括工作线程子模块和接入线程子模块;
所述工作线程子模块,用于通过所述连接向所述连接对应的所述移动终端推送所述消息;
所述接入线程子模块,用于监听并接收所述移动终端发起的基于所述用户和所述应用的连接,并将所述连接压入所述工作线程子模块的连接队列中;
所述工作线程子模块,还用于从所述连接队列中获取所述连接,并将所述连接存入所述全局哈希映射表中。
可选地,如上推送服务器设备中,所述工作线程子模块,还用于将所述连接存入所述工作线程子模块的链接表中;
进一步地,所述工作线程子模块,还用于定期轮询所述链接表中的所述连接;并检查所述连接是否过期或者所述连接是否正常;当所述连接过期或者所述连接不正常,删除所述连接;
所述工作线程子模块,还用于删除所述全局哈希映射表中所述连接对应的映射关系。
可选地,如上推送服务器设备中,所述处理模块还包括:
所述主线程子模块,用于预先创建所述工作线程子模块和所述接入线程子模块。
再一方面,提供一种消息推送系统,包括应用服务器、推送服务器设备和移动终端;所述推送服务器设备分别与所述应用服务器和所述移动终端通信连接,所述推送服务器设备采用如上任一所述的推送服务器设备。
本发明实施例提供的技术方案带来的有益效果是:
推送服务器通过接收应用服务器发送的消息,所述消息中包括所述应用的标识;推送服务器设备根据应用的标识,获取应用对应的连接;所述连接为移动终端与所述推送服务器之间基于用户和所述应用的连接;推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。通过采用本发明实施例的技术方案,不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,本发明实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此本发明实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的消息推送方法的流程图。
图2为本发明实施例中推送服务器的线程架构图。
图3为本发明实施例二提供给的消息推送方法的流程图。
图4为本发明实施例三提供的推送服务器设备的结构示意图。
图5为实施例四提供的推送服务器设备的结构示意图。
图6为本发明实施例五提供消息推送系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
图1为本发明实施例一提供的消息推送方法的流程图。如图1所示,本实施例的消息推送方法,具体可以包括如下步骤:
100、推送服务器设备接收应用服务器发送的消息;该消息中包括该应用的标识;
根据该应用的标识,推送服务器设备可以知道该消息为哪个应用服务器发送的,从而可以确定该消息将要推送给使用该应用的用户。本发明实施例中的用户均指的是使用该应用的账户,如QQ号码等。本实施例的应用的标识为该应用的唯一标识,为QQ农场的身份标识码(Identity;ID)或者QQ空间的标识ID等等。
101、推送服务器设备根据应用的标识,确定应用对应的连接;
本实施例中的连接为移动终端与推送服务器之间基于用户和该应用的连接。当某用户通过移动终端登录该应用时,此时该移动终端与推送服务器之间基于用户和该应用建立连接。例如推送服务器设备可以确定一下当前在线的该应用对应的所有连接或所有连接中的多个连接。如用户A通过移动终端B登录该应用,在移动终端B与推送服务器之间建立的基于该用户A和该应用的连接;用户C通过移动终端D登录该应用,在移动终端D与推送服务器之间建立的基于该用户C和该应用的连接,等等。当该用户未在移动终端上登录该应用,此时连接不存在。
102、推送服务器设备通过获取的各连接,向每一连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收该消息。
推送服务器设备通过获取的各连接均为在线连接,因此可以基于各在线连接进行消息推送。每一连接为移动终端与推送服务器之间基于用户和该应用的连接。因此推送服务器设备向移动终端推送消息,这样,可以便于该移动终端上登录该应用的该用户获取到推送的消息,从而实现消息的正确推送。
本实施例中的推送服务器设备,与现有技术中的IOS平台和Android平台的Push服务器不同,可以设置与移动终端设置在同一区域,如可以该移动终端所在的国家内。而且该推送服务器不限制为台服务器,可以为一组集群服务器,部署在一个域名网站的下面,而且可以对移动、联通、电信等不同的运营商有不同的机房部署。移动终端连接推送服务器的域名网站,该域名网站的全局负载均衡系统(Global Server Load Balance;GSLB)会针对当前移动终端的网络类型如电信、移动或联通,自动选择对应的机房(如电信、移动或联通)的推送服务器。连接成功后,该连接一直保留。
本实施例的消息推送方法,推送服务器设备根据应用的标识,确定应用对应的连接,并根据应用的标识,确定应用对应的连接;然后推送服务器设备通过获取的各连接,向每一连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收该消息。通过采用本实施例的技术方案,不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,本实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此本实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
可选地,在上述实施例的技术方案的基础上,其中步骤100“推送服务器设备接收应用服务器发送的消息”之后,步骤101“推送服务器设备根据应用的标识,获取应用对应的连接”之前,还包括:推送服务器设备判断并确定存在推送消息的连接。
例如,推送服务器设备可以判断全局哈希映射表中是否存在包括应用的标识的映射关系;当全局哈希映射表中包括应用的标识的映射关系,推送服务器设备确定存在推送消息的连接,否则,推送服务器设备确定不存在推送消息的连接。
其中的映射关系为用户的标识、应用的标识和移动终端的标识的对应关系;本实施例中的用户的标识为用户的账户,如QQ号码等。应用的标识为该用户账户登录的应用的唯一标识,如QQ农场的身份标识码(Identity;ID)或者QQ空间的标识ID等等。本实施例中的移动终端的标识为该移动终端的ID,用于唯一际标识移动终端的移动装备辨识码,可以由15位数字组成的″电子串号″,它与每台移动终端一一对应,而且该码是全世界唯一的。每一个移动终端在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。
由上述可以知道,全局哈希映射表中包括多条用户标识、应用标识和移动终端标识之间的映射关系。推送服务器设备判断全局映射关系表中的多条映射关系中的应用的标识是否包括有应用服务器对应的应用的标识对应的映射关系,如果有,则确定存在推送消息的连接,否则,推送服务器设备确定不存在推送消息的连接。
进一步可选地,在上述实施例的技术方案的基础上,还可以包括如下步骤:
(A)当推送服务器设备确定不存在推送所述消息的连接时,推送服务器设备将消息存储在数据中心设备中;
该数据中心设备可以设置在推送服务器中,也可以独立于推送服务器设置。
进一步还包括如下步骤:
(B)推送服务器设备确定存在推送消息的连接时,推送服务器设备从数据中心设备中提取消息;
(C)推送服务器设备通过该连接向该连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收该消息。
也就是说,推送服务器会一直检测推送服务器设备会一直检测连接,一旦发现有要推送消息的连接时,推送服务器便从数据中心设备中提取消息;并通过该连接向移动终端推送消息,具体也就是向该使用该应用的客户端上的用户推送消息。
进一步可选地,在上述实施例的技术方案的基础上,本发明实施例中的推送服务器具体可以包括三大线程模块:主(master)线程、接入(access)线程和工作(worker)线程。
图2为本发明实施例中推送服务器的线程架构图。如图2所示,本实施例的推送服务器采用多线程的模型,master线程,用以子线程的创建,以及全局管理。其中本实施例中master线程创建worker线程和access线程的时候是工作之前预先创建的,通过根据需求创建worker线程的数目,例如可以创建6个或者8个或者10个等多个worker线程,其中图2所示实施例以创建两个worker线程为例介绍本发明的技术方案。
access线程作为接入线程,用以监听、接收移动终端(client)端的连接,如图2所示,access线程用epoll方法作为移动终端侧连接的接入。Worker线程作为工作线程,有多个(图2以两个为例),worker线程用以逻辑处理(包括连接管理、消息推送等)。worker线程与移动终端之间的连接为长连接,worker线程hold住长连接、逻辑处理、epoll管理收发消息。其中每个worker线程对应一个独立的连接队列,当access线程从client端接收到一个连接后,将连接压入连接队列,worker线程从对应的连接队列取出连接并使用。
进一步可选地,基于上述图2所示的推送服务器的线程工作架构,上述实施例中的步骤102中“推送服务器设备通过获取的各连接,向每一连接对应的移动终端推送该消息”,具体可以包括:推送服务器设备的工作线程,通过获取的连接向该连接对应的移动终端推送消息,从而以供该应用的客户端上登录的该用户接收该消息。
进一步可选地,在推送服务器设备的工作线程,通过移动终端与推送服务器之间的基于用户和应用的连接向移动终端推送消息之前,还可以包括如下步骤:
(i)推送服务器设备的接入线程监听并接收移动终端发起的基于用户和应用的连接,并将连接压入推送服务器设备的工作线程的连接队列中;
(ii)推送服务器设备的工作线程从连接队列中获取连接,并将连接存入全局哈希映射表中。
本实施例中的全局哈希映射表为所有worker线程共享的,这样,可以避免不同的worker线程持有相同移动终端过来的连,从而可以避免相同连接的重复。
进一步可选地,在推送服务器设备的工作线程从连接队列中获取连接之后,还可以包括如下步骤:
(iii)推送服务器设备的工作线程将连接存入工作线程的链接表中;
其中每一个工作线程即worker线程维护一个私有的链接表,该链接表中存储有该工作线程正在处理的所有连接。
进一步地,还可以包括如下步骤:
(iv)推送服务器设备的工作线程定期轮询链接表中的连接;
(v)推送服务器设备的工作线程检查连接是否过期或者连接是否正常;
(vi)当连接过期或者连接不正常,推送服务器设备的工作线程删除连接;
(vii)推送服务器设备的工作线程删除全局哈希映射表中连接对应的映射关系。
通过上述步骤(iv)-(vii),工作线程可以对连接进行逻辑管理,保证所有在线连接的有效性,保证了消息推送的效率。
需要说明的是,推送服务器设备的主线程预先创建推送服务器设备的工作线程和推送服务器设备的接入线程。
上述实施例的消息推送方法,可以采用可结合的方式任意组合形成本发明的可选实施例,在此不再赘述。
上述实施例的消息推送方法,不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,上述实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此上述实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
实施例二
图3为本发明实施例二提供给的消息推送方法的流程图。本实施例的消息推送方法在上述图1及上述可选实施例的基础上,详细介绍本发明的技术方案。且本实施例中,以消息推送服务器设备采用图2所示的线程架构为例,介绍本发明的技术方案。如图3所示,本实施例的消息推送方法,具体可以包括如下步骤:
200、当用户通过移动终端登录应用时,移送终端与消息推送服务器设备之间建立基于该用户和该应用的连接;
例如用户A通过移动终端B登录应用C,在移动终端B与消息推送服务器设备之间建立基于该用户A和该应用C的连接。若用户D通过移动终端E登录应用C,在移动终端E与消息推送服务器设备之间也需要建立基于该用户D和该应用C的连接。亦即,每一条连接必须包括用户、用户登录的应用和移动终端三个参数信息。该连接可以采用用户标识、应用标识和终端的标识之间的对应关系表示。
按照该步骤200可以各移动终端与推送服务器之间可以建立海量连接。
201、消息推送服务器设备的接入线程监听到连接,并将连接压入到推送服务器设备的工作线程的连接队列中;
需要说明的是,消息推送服务器设备的主线程在工作之前预先设置多条工作线程和接入线程。且接入线程在向工作线程的连接队列中压入监听到的连接时,采用轮询的方式顺次向各个工作线程的连接队列中压入连接。
202、消息推送服务器设备的各工作线程从对应的连接队列中获取连接,并将连接存入全局哈希映射表中;
该全局哈希映射表为所有工作线程共享的,该全局哈希映射表中每一条连接中包括一条用户标识、应用标识和移动终端之间的对应关系。每个接入线程均将其获取到的连接存入全局哈希映射表中。
需要说明的是,推送服务器设备的工作线程同时还将连接存入工作线程的链接表中;
其中每一个工作线程即worker线程维护一个私有的链接表,该链接表中存储有该工作线程正在处理的连接。
同时,推送服务器设备的工作线程还对链接表中的连接进行管理,如推送服务器设备的工作线程定期轮询链接表中的连接;并检查连接是否过期或者连接是否正常;当连接过期或者连接不正常,推送服务器设备的工作线程删除连接。同时推送服务器设备的工作线程删除全局哈希映射表中连接对应的映射关系,以保证所有在线连接的有效性,保证了消息推送的效率。
203、当推送服务器设备接收应用服务器发送的消息时,获取该应用的标识;
204、推送服务器设备的工作线程判断全局哈希映射表中是否存在包括该应用的标识的映射关系,当存在时,执行步骤205;否则执行步骤206;
205、推送服务器设备的工作线程确定存在推送消息的连接;执行步骤207;
206、推送服务器设备的工作线程确定不存在推送该消息的连接;执行步骤208;
207、推送服务器设备的工作线程通过该连接向该连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收该消息,结束。
208、推送服务器设备的工作线程将该消息存入数据中心设备中;执行步骤209;
209、推送服务器设备的接入线程检测到新接入的连接中包括推送该消息的连接时,从数据中心设备中提取该消息;执行步骤207。
其中,在步骤208之后,推送服务器设备的接入线程继续检测新接入的连接,并将新接入的连接压入到推送服务器设备的工作线程的连接队列中,直到推送服务器设备的接入线程检测到新接入的连接是推送该消息的连接时执行步骤209。
本实施例的消息推送方法,不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,上述实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此上述实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
实施例三
图4为本发明实施例三提供的推送服务器设备的结构示意图。如图3所示,本实施例的推送服务器设备,具体可以包括:接收模块10和处理模块11。
其中接收模块10用于接收应用服务器发送的消息;该消息中包括应用的标识;处理模块11与接收模块10连接,处理模块11用于根据接收模块10接收的消息中的应用的标识,确定应用对应的连接;该连接为移动终端与推送服务器之间基于用户和应用的连接;处理模块11还用于通过各连接,向该连接对应的移动终端推送消息,以供应用的客户端上登录的用户接收消息。
本实施例的推送服务器设备,通过采用上述模块实现消息推送的实现机制与上述相关方法实施例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
本实施例的推送服务器设备,通过采用上述模块实现根据应用的标识,确定应用对应的连接,并根据应用的标识,确定应用对应的连接;然后推送服务器设备通过获取的各连接,向每一连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收该消息。通过采用本实施例的技术方案,不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,本实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此本实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
实施例四
图5为实施例四提供的推送服务器设备的结构示意图。本实施例在上述图4所示实施例的基础上,进一步更加详细地介绍本发明的技术方案。
本实施例的推送服务器设备中处理模块11还用于在接收模块10接收应用服务器发送的消息之后,处理模块11根据应用的标识,获取应用对应的连接之前,判断并确定存在推送消息的连接。
可选地,本实施例的推送服务器设备中处理模块11具体用于判断全局哈希映射表中是否存在包括该应用的标识的映射关系;该映射关系为用户的标识、该应用的标识和移动终端的标识的对应关系;当全局哈希映射表中包括该应用的标识的映射关系,确定存在推送消息的连接,否则,确定不存在推送消息的连接。
进一步可选地,本实施例的推送服务器设备中处理模块11还用于当确定不存在推送消息的连接时,将消息存储在数据中心设备中。处理模块11还用于当推送服务器设备确定存在推送消息的连接时,从数据中心设备中提取消息,并通过该连接向连接对应的移动终端推送消息,以供应用的客户端上登录的用户接收消息。
进一步可选地,本实施例的推送服务器设备中处理模块11包括工作线程子模块111和接入线程子模块112。
其中工作线程子模块112用于通过获取的连接向连接对应的移动终端推送消息。工作线程子模块112与接收模块10连接,工作线程子模块112具体用于在接收模块10接收应用服务器发送的消息之后,根据应用的标识,获取应用对应的连接,并进一步在获取应用对应的连接之前,还判断并确定存在推送消息的连接。例如工作线程子模块112具体用于判断全局哈希映射表中是否存在包括该应用的标识的映射关系;该映射关系为用户的标识、该应用的标识和移动终端的标识的对应关系;当全局哈希映射表中包括该应用的标识的映射关系,确定存在推送消息的连接,否则,确定不存在推送消息的连接。
其中,接入线程子模块111与工作线程子模块112连接,接入线程子模块111用于监听并接收移动终端发起的基于用户和应用的连接,并将连接压入工作线程子模块112的连接队列中;工作线程子模块112还用于从连接队列中获取连接,并将连接存入全局哈希映射表中。
进一步可选地,本实施例的推送服务器设备中工作线程子模块112还用于将连接存入工作线程子模块112的链接表中;
进一步地,工作线程子模块112还用于定期轮询链接表中的连接;并检查连接是否过期或者连接是否正常;当连接过期或者连接不正常,删除连接。工作线程子模块112还用于删除全局哈希映射表中连接对应的映射关系,以保证连接的有效性,保证消息的正确推送。
进一步可选地,本实施例的推送服务器设备中处理模块11还包括主线程子模块113。其中主线程子模块113分别与工作线程子模块112和接入线程子模块111连接,主线程子模块113用于预先创建工作线程子模块112和和接入线程子模块111。
本实施例的推送服务器设备,上述所有可选技术方案,可以采用可以结合的任意方式结合形成本发明的可选实施例,在此不再赘述。
本实施例的推送服务器设备,通过采用上述模块实现消息推送的实现机制与上述相关方法实施例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
本实施例的推送服务器设备,通过采用上述模块实现不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,上述实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此上述实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
实施例五
图6为本发明实施例五提供消息推送系统的结构示意图。如图5所示,本实施例的消息推送系统包括应用服务器20、推送服务器设备30和移动终端40;推送服务器设备30分别与应用服务器设备20和移动终端40通信连接。
例如应用服务器20用于向推送服务器设备30发送要推送的消息,该消息中会携带应用的标识。推送服务器设备30用于接收该消息;并根据该应用的标识,确定该应用对应的连接;该连接为移动终端与推送服务器之间基于用户和该应用的连接;最后推送服务器设备30还用于通过各所述连接,向该连接对应的移动终端推送该消息,以供该应用的客户端上登录的用户接收该消息。
本实施例中的推送服务器设备30与现有技术中的IOS平台和Android平台的Push服务器不同,可以设置与移动终端设置在同一区域,如可以该移动终端所在的国家内。而且该推送服务器不限制为台服务器,可以为一组集群服务器,部署在一个域名网站的下面,而且可以对移动、联通、电信等不同的运营商有不同的机房部署。移动终端连接推送服务器的域名网站,该域名网站的GSLB会针对当前移动终端的网络类型如电信、移动或联通,自动选择对应的机房(如电信、移动或联通)的推送服务器设备。
具体地,本实施例的推送服务器设备30具体采用如上实施例四或者五所述的推送服务器设备,并可以采用上述实施例一或者二所述的消息推送方法实现消息的推送,详细可以参考上述相关实施例的记载,在此不再赘述。
本实施例的消息推送系统,通过采用上述技术方案,不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,本实施例中的推送服务器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此本实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息推送的效率更高。
而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一样的,且“不统一”,接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
需要说明的是:上述实施例提供的消息推送服务器设备在消息推送业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的消息推送服务器设备与消息推送的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种消息推送方法,其特征在于,所述方法包括:
推送服务器设备接收应用服务器发送的消息;所述消息中包括所述应用的标识;
所述推送服务器设备判断全局哈希映射表中是否存在包括所述应用的标识的映射关系;所述映射关系为用户的标识、所述应用的标识和移动终端的标识的对应关系;
当所述全局哈希映射表中包括所述应用的标识的映射关系,所述推送服务器设备确定存在推送所述消息的连接;
所述推送服务器设备根据所述应用的标识,确定所述应用对应的连接;所述连接为所述移动终端与所述推送服务器之间基于所述用户和所述应用的连接;
所述推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
2.根据权利要求1所述的方法,其特征在于,所述推送服务器设备判断全局哈希映射表中是否存在包括所述应用的标识的映射关系之后,所述方法还包括:
当所述全局哈希映射表中不包括所述应用的标识的映射关系,所述推送服务器设备确定不存在推送所述消息的连接。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述推送服务器设备确定不存在推送所述消息的连接时,所述推送服务器设备将所述消息存储在数据中心设备中;
所述方法进一步还包括:
当所述推送服务器设备确定存在推送所述消息的连接时,所述推送服务器设备从所述数据中心设备中提取所述消息;
所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
4.根据权利要求2或3所述的方法,其特征在于,所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消息,包括:
所述推送服务器设备的工作线程,通过所述连接向所述连接对应的所述移动终端推送所述消息。
5.根据权利要求4所述的方法,其特征在于,所述推送服务器设备的工作线程,通过所述连接向所述连接对应的所述移动终端推送所述消息之前,所述方法还包括:
所述推送服务器设备的接入线程监听并接收所述移动终端发起的基于所述用户和所述应用的连接,并将所述连接压入所述推送服务器设备的工作线程的连接队列中;
所述推送服务器设备的工作线程从所述连接队列中获取所述连接,并将所述连接存入所述全局哈希映射表中。
6.根据权利要求5所述的方法,其特征在于,所述推送服务器设备的工作线程从所述连接队列中获取所述连接之后,所述方法还包括:
所述推送服务器设备的工作线程将所述连接存入所述工作线程的链接表中;
进一步地,所述方法还包括:
所述推送服务器设备的工作线程定期轮询所述链接表中的所述连接;
所述推送服务器设备的工作线程检查所述连接是否过期或者所述连接是否正常;
当所述连接过期或者所述连接不正常,所述推送服务器设备的工作线程删除所述连接;
所述推送服务器设备的工作线程删除所述全局哈希映射表中所述连接对应的映射关系。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
所述推送服务器设备的主线程预先创建所述推送服务器设备的工作线程和所述推送服务器设备的接入线程。
8.一种推送服务器设备,其特征在于,所述设备包括:
接收模块,用于接收应用服务器发送的消息;所述消息中包括所述应用的标识;
处理模块,用于判断全局哈希映射表中是否存在包括所述应用的标识的映射关系;所述映射关系为用户的标识、所述应用的标识和移动终端的标识的对应关系;当所述全局哈希映射表中包括所述应用的标识的映射关系,确定存在推送所述消息的连接;
所述处理模块,还用于根据所述应用的标识,确定所述应用对应的连接;所述连接为所述移动终端与所述推送服务器之间基于所述用户和所述应用的连接;所述处理模块,还用于通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
9.根据权利要求8所述的设备,其特征在于,所述处理模块还用于,当所述全局哈希映射表中不包括所述应用的标识的映射关系,确定不存在推送所述消息的连接。
10.根据权利要求9所述的设备,其特征在于:
所述处理模块,还用于当确定不存在推送所述消息的连接时,将所述消息存储在数据中心设备中;
所述处理模块,还用于当所述推送服务器设备确定存在推送所述消息的连接时,从所述数据中心设备中提取所述消息,并通过所述连接向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
11.根据权利要求9或10所述的设备,其特征在于,所述处理模块,包括工作线程子模块和接入线程子模块;
所述工作线程子模块,用于通过所述连接向所述连接对应的所述移动终端推送所述消息;
所述接入线程子模块,用于监听并接收所述移动终端发起的基于所述用户和所述应用的连接,并将所述连接压入所述工作线程子模块的连接队列中;
所述工作线程子模块,还用于从所述连接队列中获取所述连接,并将所述连接存入所述全局哈希映射表中。
12.根据权利要求11所述的设备,其特征在于:
所述工作线程子模块,还用于将所述连接存入所述工作线程子模块的链接表中;
进一步地,所述工作线程子模块,还用于定期轮询所述链接表中的所述连接;并检查所述连接是否过期或者所述连接是否正常;当所述连接过期或者所述连接不正常,删除所述连接;
所述工作线程子模块,还用于删除所述全局哈希映射表中所述连接对应的映射关系。
13.根据权利要求11所述的设备,其特征在于,所述处理模块还包括:
主线程子模块,用于预先创建所述工作线程子模块和所述接入线程子模块。
14.一种消息推送系统,其特征在于,包括应用服务器、推送服务器设备和移动终端;所述推送服务器设备分别与所述应用服务器和所述移动终端通信连接,所述推送服务器设备采用如上权利要求8-13任一所述的推送服务器设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310165603.2A CN104144098B (zh) | 2013-05-07 | 2013-05-07 | 消息推送方法、系统及推送服务器设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310165603.2A CN104144098B (zh) | 2013-05-07 | 2013-05-07 | 消息推送方法、系统及推送服务器设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104144098A CN104144098A (zh) | 2014-11-12 |
CN104144098B true CN104144098B (zh) | 2018-04-03 |
Family
ID=51853167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310165603.2A Active CN104144098B (zh) | 2013-05-07 | 2013-05-07 | 消息推送方法、系统及推送服务器设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104144098B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580398B (zh) * | 2014-12-22 | 2018-06-01 | 北京像素软件科技股份有限公司 | 一种网络内容推送方法、装置和网络内容展示客户端 |
CN113037823B (zh) | 2015-01-23 | 2024-03-22 | 电子湾有限公司 | 消息传递系统和方法 |
US10425341B2 (en) | 2015-01-23 | 2019-09-24 | Ebay Inc. | Processing high volume network data |
CN104796495A (zh) * | 2015-05-08 | 2015-07-22 | 集怡嘉数码科技(深圳)有限公司 | 一种消息推送方法及系统 |
CN105095358A (zh) * | 2015-06-24 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种数据库操作日志获取方法及系统 |
CN105871966A (zh) * | 2015-09-22 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 消息分发的方法、装置及系统 |
CN105515914B (zh) * | 2015-12-24 | 2019-01-25 | 无线生活(杭州)信息科技有限公司 | 一种为Push消息分配流量的方法及装置 |
CN105978795A (zh) * | 2016-06-22 | 2016-09-28 | 安徽广行物联科技有限公司 | 移动消息双平台多终端多应用推送方法 |
CN106572173B (zh) * | 2016-11-07 | 2020-06-09 | 阿里巴巴(中国)有限公司 | 一种配置信息更新方法、装置和系统 |
CN110381100B (zh) * | 2018-04-13 | 2022-03-29 | 佛山市顺德区美的电热电器制造有限公司 | 一种消息推送方法、服务器及计算机可读存储介质 |
CN108600094A (zh) * | 2018-05-11 | 2018-09-28 | 深圳壹账通智能科技有限公司 | 消息推送过程的监听方法、装置、计算机设备及存储介质 |
CN108809703A (zh) * | 2018-05-28 | 2018-11-13 | 深圳远征技术有限公司 | 一种告警通知的推送方法、系统及服务器 |
CN109218431A (zh) * | 2018-09-28 | 2019-01-15 | 江苏中威科技软件系统有限公司 | 一种信息精准推送管理方法 |
CN113238808A (zh) * | 2020-01-22 | 2021-08-10 | 北京沃东天骏信息技术有限公司 | 一种消息推送方法和装置 |
CN111741060B (zh) * | 2020-05-08 | 2023-12-12 | 广州三七互娱科技有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1021021B1 (en) * | 1999-01-13 | 2005-09-07 | International Business Machines Corporation | Method and apparatus for providing awareness-triggered push |
CN102196011A (zh) * | 2010-03-15 | 2011-09-21 | 中兴通讯股份有限公司 | 一种利用推送服务提供应用信息的方法及系统 |
CN102355500A (zh) * | 2011-10-08 | 2012-02-15 | 中兴通讯股份有限公司 | 业务推送方法和装置 |
CN102523177A (zh) * | 2011-12-19 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种消息推送服务的实现方法与系统 |
CN102724324A (zh) * | 2012-06-28 | 2012-10-10 | 用友软件股份有限公司 | 消息推送整合装置和消息推送整合方法 |
-
2013
- 2013-05-07 CN CN201310165603.2A patent/CN104144098B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1021021B1 (en) * | 1999-01-13 | 2005-09-07 | International Business Machines Corporation | Method and apparatus for providing awareness-triggered push |
CN102196011A (zh) * | 2010-03-15 | 2011-09-21 | 中兴通讯股份有限公司 | 一种利用推送服务提供应用信息的方法及系统 |
CN102355500A (zh) * | 2011-10-08 | 2012-02-15 | 中兴通讯股份有限公司 | 业务推送方法和装置 |
CN102523177A (zh) * | 2011-12-19 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种消息推送服务的实现方法与系统 |
CN102724324A (zh) * | 2012-06-28 | 2012-10-10 | 用友软件股份有限公司 | 消息推送整合装置和消息推送整合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104144098A (zh) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104144098B (zh) | 消息推送方法、系统及推送服务器设备 | |
CN103501486B (zh) | 一种消息推送方法及推送服务器 | |
CN102845123B (zh) | 虚拟私云的连接方法及隧道代理服务器 | |
CN108881354B (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
CN104580085A (zh) | 业务数据更新方法、系统、客户端及服务器 | |
CN107105050B (zh) | 一种业务对象的存储、下载方法及系统 | |
CN105867837A (zh) | 一种分布式高速缓存系统中的客户端配置更新方法、设备及系统 | |
CN105635180A (zh) | 消息推送方法及装置 | |
CN108833565A (zh) | 一种监控服务器的方法、装置、服务器和存储介质 | |
CN107395559A (zh) | 基于redis的数据处理方法及设备 | |
CN102111728B (zh) | 移动终端的网络连接管理模块和方法 | |
CN103546528B (zh) | 分布式消息推送方法及系统 | |
CN105207860A (zh) | 一种业务加速系统及方法 | |
CN106210362B (zh) | 通话方法及装置 | |
CN101159716A (zh) | 一种网关系统及其消息业务处理方法 | |
CN108306907A (zh) | 一种终端的管理方法、网络功能和终端 | |
CN107645563B (zh) | 一种医疗测试设备的物联网通讯方法及系统 | |
CN109981795A (zh) | 资源请求调度方法和装置 | |
CN107071038A (zh) | 一种传输多媒体数据的方法及装置 | |
CN113904860A (zh) | 数据传输方法、装置、设备、系统及存储介质 | |
CN103973485B (zh) | 基于固定端口的运维管理系统及方法 | |
CN107733979A (zh) | 数据推送方法、服务器及系统 | |
CN106533716A (zh) | 一种北向接口的管理方法和系统 | |
CN114139093A (zh) | 一种数据通讯方法、设备及介质 | |
CN111200512B (zh) | 网络连接容灾方法、终端设备、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |