消息推送方法、系统及推送服务器设备的制作方法
【专利摘要】本发明公开了一种消息推送方法、系统及推送服务器设备,属于通信【技术领域】。所述方法包括:推送服务器设备接收应用服务器发送的消息;所述消息中包括所述应用的标识;所述推送服务器设备根据所述应用的标识,确定所述应用对应的连接;所述连接为移动终端与所述推送服务器之间基于用户和所述应用的连接;所述推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。本发明通过采用上述技术方案。实现不用基于平台的类型进行消息推送,丰富了消息推送的方式,且使用灵活方便。
【专利说明】消息推送方法、系统及推送服务器设备
【技术领域】
[0001] 本发明涉及通信【技术领域】,特别涉及一种消息推送方法、系统及推送服务器设备。
【背景技术】
[0002] 随着移动通讯技术的发展,出现一种以推送(Push)方式传输消息的消息传输技 术。消息推送技术主要是利用Push技术主动地、有目的地向用户推送消息。
[0003] 移动通信技术中的两大职能平台为苹果公司的苹果操作系统(Iphone Oration System ;I0S)平台和谷歌公司的安卓(Android)平台。这两大平台都有自己的消息Push 服务。苹果的I0S平台的消息Push服务为苹果推送通知服务(Apple Push Notification Service)。谷歌的 android 平台的消息 Push 服务包括 Cloud to Device Messaging (简称C2DM)服务;C2DM服务允许第三方开发者开发相关的应用来推送少量数据消息 (1024bytes)到用户的移动终端上的。谷歌的Android平台的消息Push服务还包括谷歌的 云推送消息服务(Google Cloud Messaging ;简称GCM)服务,该GCM服务是之前的C2DM服 务的升级。且I0S平台和Android平台的Push服务器都设置在美国,当向美国之外的其他 国家区域的用户推送消息的时候均需要跨越跨国网络来实现。
[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:现有的I0S平 台和Android平台的Push推送服务器必须基于平台的类型进行消息推送服务,导致消息推 送方式较为单一,使用不灵活。
【发明内容】
[0005] 为了解决现有技术的问题,本发明实施例提供了一种消息推送方法、系统及推送 服务器设备。所述技术方案如下:
[0006] -方面,提供了一种消息推送方法,所述方法包括:
[0007] 推送服务器设备接收应用服务器发送的消息;所述消息中包括所述应用的标识;
[0008] 所述推送服务器设备根据所述应用的标识,确定所述应用对应的连接;所述连接 为移动终端与所述推送服务器之间基于用户和所述应用的连接;
[0009] 所述推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述 消息,以供所述应用的客户端上登录的所述用户接收所述消息。
[0010] 可选地,如上所述的消息推送方法中,所述推送服务器设备接收应用服务器发送 的消息之后,所述推送服务器设备根据所述应用的标识,获取所述应用对应的连接之前,还 包括:
[0011] 所述推送服务器设备判断并确定存在推送所述消息的连接。
[0012] 可选地,如上所述的消息推送方法中,所述推送服务器设备判断并确定存在推送 所述消息的连接,包括:
[0013] 所述推送服务器设备判断全局哈希映射表中是否存在包括所述应用的标识的映 射关系;所述映射关系为所述用户的标识、所述应用的标识和所述移动终端的标识的对应 关系;
[0014] 当所述全局哈希映射表中包括所述应用的标识的映射关系,所述推送服务器设备 确定存在推送所述消息的连接,否则,所述推送服务器设备确定不存在推送所述消息的连 接。
[0015] 可选地,如上所述的消息推送方法中,还包括:
[0016] 当所述推送服务器设备确定不存在推送所述消息的连接时,所述推送服务器设备 将所述消息存储在数据中心设备中;
[0017] 所述方法进一步还包括:
[0018] 当所述推送服务器设备确定存在推送所述消息的连接时,所述推送服务器设备从 所述数据中心设备中提取所述消息;
[0019] 所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消 息,以供所述应用的客户端上登录的所述用户接收所述消息。
[0020] 可选地,如上所述的消息推送方法中,所述推送服务器设备向所述移动终端推送 消息,包括:
[0021] 所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消 息,包括:
[0022] 所述推送服务器设备的工作线程,通过所述连接向所述连接对应的所述移动终端 推送所述消息。
[0023] 可选地,如上所述的消息推送方法中,所述推送服务器设备的工作线程,通过所述 连接向所述连接对应的所述移动终端推送所述消息之前,还包括:
[0024] 所述推送服务器设备的接入线程监听并接收所述移动终端发起的基于所述用户 和所述应用的连接,并将所述连接压入所述推送服务器设备的工作线程的连接队列中;
[0025] 所述推送服务器设备的工作线程从所述连接队列中获取所述连接,并将所述连接 存入所述全局哈希映射表中。
[0026] 可选地,如上所述的消息推送方法中,所述推送服务器设备的工作线程从所述连 接队列中获取所述连接之后,还包括:
[0027] 所述推送服务器设备的工作线程将所述连接存入所述工作线程的链接表中;
[0028] 进一步地,所述方法还包括:
[0029] 所述推送服务器设备的工作线程定期轮询所述链接表中的所述连接;
[0030] 所述推送服务器设备的工作线程检查所述连接是否过期或者所述连接是否正 常;
[0031] 当所述连接过期或者所述连接不正常,所述推送服务器设备的工作线程删除所述 连接;
[0032] 所述推送服务器设备的工作线程删除所述全局哈希映射表中所述连接对应的映 身寸关系。
[0033] 可选地,如上所述的消息推送方法中,还包括:
[0034] 所述推送服务器设备的主线程预先创建所述推送服务器设备的工作线程和所述 推送服务器设备的接入线程。
[0035] 另一方面,提供了 一种推送服务器设备,所述设备包括:
[0036] 接收模块,用于接收应用服务器发送的消息;所述消息中包括所述应用的标识;
[0037] 处理模块,用于根据所述应用的标识,确定所述应用对应的连接;所述连接为移动 终端与所述推送服务器之间基于用户和所述应用的连接;所述处理模块,还用于通过各所 述连接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的 所述用户接收所述消息。
[0038] 可选地,如上推送服务器设备中,所述处理模块,还用于在所述接收模块接收应用 服务器发送的消息之后,所述处理模块根据所述应用的标识,获取所述应用对应的连接之 前,判断并确定存在推送所述消息的连接。
[0039] 可选地,如上推送服务器设备中,所述处理模块,所述处理模块,具体用于判断全 局哈希映射表中是否存在包括所述应用的标识的映射关系;所述映射关系为所述用户的标 识、所述应用的标识和所述移动终端的标识的对应关系;当所述全局哈希映射表中包括所 述应用的标识的映射关系,确定存在推送所述消息的连接,否则,确定不存在推送所述消息 的连接。
[0040] 可选地,如上推送服务器设备中,所述处理模块,还用于当确定不存在推送所述消 息的连接时,将所述消息存储在数据中心设备中;
[0041] 所述处理模块,还用于当所述推送服务器设备确定存在推送所述消息的连接时, 从所述数据中心设备中提取所述消息,并通过所述连接向所述连接对应的所述移动终端推 送所述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
[0042] 可选地,如上推送服务器设备中,所述处理模块,包括工作线程子模块和接入线程 子模块;
[0043] 所述工作线程子模块,用于通过所述连接向所述连接对应的所述移动终端推送所 述消息;
[0044] 所述接入线程子模块,用于监听并接收所述移动终端发起的基于所述用户和所述 应用的连接,并将所述连接压入所述工作线程子模块的连接队列中;
[0045] 所述工作线程子模块,还用于从所述连接队列中获取所述连接,并将所述连接存 入所述全局哈希映射表中。
[0046] 可选地,如上推送服务器设备中,所述工作线程子模块,还用于将所述连接存入所 述工作线程子模块的链接表中;
[0047] 进一步地,所述工作线程子模块,还用于定期轮询所述链接表中的所述连接;并检 查所述连接是否过期或者所述连接是否正常;当所述连接过期或者所述连接不正常,删除 所述连接;
[0048] 所述工作线程子模块,还用于删除所述全局哈希映射表中所述连接对应的映射关 系。
[0049] 可选地,如上推送服务器设备中,所述处理模块还包括:
[0050] 所述主线程子模块,用于预先创建所述工作线程子模块和所述接入线程子模块。
[0051] 再一方面,提供一种消息推送系统,包括应用服务器、推送服务器设备和移动终 端;所述推送服务器设备分别与所述应用服务器和所述移动终端通信连接,所述推送服务 器设备采用如上任一所述的推送服务器设备。
[0052] 本发明实施例提供的技术方案带来的有益效果是:
[0053] 推送服务器通过接收应用服务器发送的消息,所述消息中包括所述应用的标识; 推送服务器设备根据应用的标识,获取应用对应的连接;所述连接为移动终端与所述推送 服务器之间基于用户和所述应用的连接;推送服务器设备通过各所述连接,向所述连接对 应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述用户接收所述消 息。通过采用本发明实施例的技术方案,不用基于平台的类型进行消息推送,丰富了消息推 送的方式,且使用灵活方便。且进一步地,本发明实施例中的推送服务器可以设置在各运营 商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问I0S平台的或 者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的 缺陷,因此本发明实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,消息 推送的效率更高。
[0054] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
【专利附图】
【附图说明】
[0055] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0056] 图1为本发明实施例一提供的消息推送方法的流程图。
[0057] 图2为本发明实施例中推送服务器的线程架构图。
[0058] 图3为本发明实施例二提供给的消息推送方法的流程图。
[0059] 图4为本发明实施例三提供的推送服务器设备的结构示意图。
[0060] 图5为实施例四提供的推送服务器设备的结构示意图。
[0061] 图6为本发明实施例五提供消息推送系统的结构示意图。
【具体实施方式】
[0062] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0063] 实施例一
[0064] 图1为本发明实施例一提供的消息推送方法的流程图。如图1所示,本实施例的 消息推送方法,具体可以包括如下步骤:
[0065] 100、推送服务器设备接收应用服务器发送的消息;该消息中包括该应用的标识;
[0066] 根据该应用的标识,推送服务器设备可以知道该消息为哪个应用服务器发送的, 从而可以确定该消息将要推送给使用该应用的用户。本发明实施例中的用户均指的是使用 该应用的账户,如QQ号码等。本实施例的应用的标识为该应用的唯一标识,为QQ农场的身 份标识码(Identity ;ID)或者QQ空间的标识ID等等。
[0067] 101、推送服务器设备根据应用的标识,确定应用对应的连接;
[0068] 本实施例中的连接为移动终端与推送服务器之间基于用户和该应用的连接。当某 用户通过移动终端登录该应用时,此时该移动终端与推送服务器之间基于用户和该应用建 立连接。例如推送服务器设备可以确定一下当前在线的该应用对应的所有连接或所有连接 中的多个连接。如用户A通过移动终端B登录该应用,在移动终端B与推送服务器之间建 立的基于该用户A和该应用的连接;用户C通过移动终端D登录该应用,在移动终端D与推 送服务器之间建立的基于该用户C和该应用的连接,等等。当该用户未在移动终端上登录 该应用,此时连接不存在。
[0069] 102、推送服务器设备通过获取的各连接,向每一连接对应的移动终端推送该消 息,以供该应用的客户端上登录的该用户接收该消息。
[0070] 推送服务器设备通过获取的各连接均为在线连接,因此可以基于各在线连接进行 消息推送。每一连接为移动终端与推送服务器之间基于用户和该应用的连接。因此推送服 务器设备向移动终端推送消息,这样,可以便于该移动终端上登录该应用的该用户获取到 推送的消息,从而实现消息的正确推送。
[0071] 本实施例中的推送服务器设备,与现有技术中的I0S平台和Android平台的Push 服务器不同,可以设置与移动终端设置在同一区域,如可以该移动终端所在的国家内。而且 该推送服务器不限制为台服务器,可以为一组集群服务器,部署在一个域名网站的下面,而 且可以对移动、联通、电信等不同的运营商有不同的机房部署。移动终端连接推送服务器的 域名网站,该域名网站的全局负载均衡系统(Global Server Load Balance ;GSLB)会针对 当前移动终端的网络类型如电信、移动或联通,自动选择对应的机房(如电信、移动或联通) 的推送服务器。连接成功后,该连接一直保留。
[0072] 本实施例的消息推送方法,推送服务器设备根据应用的标识,确定应用对应的连 接,并根据应用的标识,确定应用对应的连接;然后推送服务器设备通过获取的各连接,向 每一连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收该消息。 通过采用本实施例的技术方案,不用基于平台的类型进行消息推送,丰富了消息推送的方 式,且使用灵活方便。且进一步地,本实施例中的推送服务器可以设置在各运营商的机房 中,与移动终端在同一区域范围内,克服了现有技术中档需要访问I0S平台的或者Android 平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺陷,因此 本实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及时,消息 推送的效率更高。
[0073] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
[0074] 可选地,在上述实施例的技术方案的基础上,其中步骤100 "推送服务器设备接收 应用服务器发送的消息"之后,步骤101 "推送服务器设备根据应用的标识,获取应用对应 的连接"之前,还包括:推送服务器设备判断并确定存在推送消息的连接。
[0075] 例如,推送服务器设备可以判断全局哈希映射表中是否存在包括应用的标识的映 射关系;当全局哈希映射表中包括应用的标识的映射关系,推送服务器设备确定存在推送 消息的连接,否则,推送服务器设备确定不存在推送消息的连接。
[0076] 其中的映射关系为用户的标识、应用的标识和移动终端的标识的对应关系;本实 施例中的用户的标识为用户的账户,如QQ号码等。应用的标识为该用户账户登录的应用的 唯一标识,如QQ农场的身份标识码(Identity ;ID)或者QQ空间的标识ID等等。本实施例 中的移动终端的标识为该移动终端的ID,用于唯一际标识移动终端的移动装备辨识码,可 以由15位数字组成的"电子串号",它与每台移动终端一一对应,而且该码是全世界唯一 的。每一个移动终端在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产 到交付使用都将被制造生产的厂商所记录。
[0077] 由上述可以知道,全局哈希映射表中包括多条用户标识、应用标识和移动终端标 识之间的映射关系。推送服务器设备判断全局映射关系表中的多条映射关系中的应用的标 识是否包括有应用服务器对应的应用的标识对应的映射关系,如果有,则确定存在推送消 息的连接,否则,推送服务器设备确定不存在推送消息的连接。
[0078] 进一步可选地,在上述实施例的技术方案的基础上,还可以包括如下步骤:
[0079] (A)当推送服务器设备确定不存在推送所述消息的连接时,推送服务器设备将消 息存储在数据中心设备中;
[0080] 该数据中心设备可以设置在推送服务器中,也可以独立于推送服务器设置。
[0081] 进一步还包括如下步骤:
[0082] (B)推送服务器设备确定存在推送消息的连接时,推送服务器设备从数据中心设 备中提取消息;
[0083] (C)推送服务器设备通过该连接向该连接对应的移动终端推送该消息,以供该应 用的客户端上登录的该用户接收该消息。
[0084] 也就是说,推送服务器会一直检测推送服务器设备会一直检测连接,一旦发现有 要推送消息的连接时,推送服务器便从数据中心设备中提取消息;并通过该连接向移动终 端推送消息,具体也就是向该使用该应用的客户端上的用户推送消息。
[0085] 进一步可选地,在上述实施例的技术方案的基础上,本发明实施例中的推送服务 器具体可以包括三大线程模块:主(master)线程、接入(access)线程和工作(worker)线 程。
[0086] 图2为本发明实施例中推送服务器的线程架构图。如图2所示,本实施例的推送 服务器采用多线程的模型,master线程,用以子线程的创建,以及全局管理。其中本实施例 中master线程创建worker线程和access线程的时候是工作之前预先创建的,通过根据需 求创建worker线程的数目,例如可以创建6个或者8个或者10个等多个worker线程,其 中图2所示实施例以创建两个worker线程为例介绍本发明的技术方案。
[0087] access线程作为接入线程,用以监听、接收移动终端(client)端的连接,如图2所 示,access线程用epoll方法作为移动终端侧连接的接入。Worker线程作为工作线程,有 多个(图2以两个为例),worker线程用以逻辑处理(包括连接管理、消息推送等)。worker 线程与移动终端之间的连接为长连接,worker线程hold住长连接、逻辑处理、印oil管理收 发消息。其中每个worker线程对应一个独立的连接队列,当access线程从client端接收 到一个连接后,将连接压入连接队列,worker线程从对应的连接队列取出连接并使用。
[0088] 进一步可选地,基于上述图2所示的推送服务器的线程工作架构,上述实施例中 的步骤102中"推送服务器设备通过获取的各连接,向每一连接对应的移动终端推送该消 息",具体可以包括:推送服务器设备的工作线程,通过获取的连接向该连接对应的移动终 端推送消息,从而以供该应用的客户端上登录的该用户接收该消息。
[0089] 进一步可选地,在推送服务器设备的工作线程,通过移动终端与推送服务器之间 的基于用户和应用的连接向移动终端推送消息之前,还可以包括如下步骤:
[0090] (i)推送服务器设备的接入线程监听并接收移动终端发起的基于用户和应用的连 接,并将连接压入推送服务器设备的工作线程的连接队列中;
[0091] (ii)推送服务器设备的工作线程从连接队列中获取连接,并将连接存入全局哈希 映射表中。
[0092] 本实施例中的全局哈希映射表为所有worker线程共享的,这样,可以避免不同的 worker线程持有相同移动终端过来的连,从而可以避免相同连接的重复。
[0093] 进一步可选地,在推送服务器设备的工作线程从连接队列中获取连接之后,还可 以包括如下步骤:
[0094] (iii)推送服务器设备的工作线程将连接存入工作线程的链接表中;
[0095] 其中每一个工作线程即worker线程维护一个私有的链接表,该链接表中存储有 该工作线程正在处理的所有连接。
[0096] 进一步地,还可以包括如下步骤:
[0097] (iv)推送服务器设备的工作线程定期轮询链接表中的连接;
[0098] (V)推送服务器设备的工作线程检查连接是否过期或者连接是否正常;
[0099] (vi)当连接过期或者连接不正常,推送服务器设备的工作线程删除连接;
[0100] (vii)推送服务器设备的工作线程删除全局哈希映射表中连接对应的映射关系。
[0101] 通过上述步骤(iv)_ (vii),工作线程可以对连接进行逻辑管理,保证所有在线连 接的有效性,保证了消息推送的效率。
[0102] 需要说明的是,推送服务器设备的主线程预先创建推送服务器设备的工作线程和 推送服务器设备的接入线程。
[0103] 上述实施例的消息推送方法,可以采用可结合的方式任意组合形成本发明的可选 实施例,在此不再赘述。
[0104] 上述实施例的消息推送方法,不用基于平台的类型进行消息推送,丰富了消息推 送的方式,且使用灵活方便。且进一步地,上述实施例中的推送服务器可以设置在各运营商 的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问I0S平台的或者 Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺 陷,因此上述实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加 及时,消息推送的效率更高。
[0105] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
[0106] 实施例二
[0107] 图3为本发明实施例二提供给的消息推送方法的流程图。本实施例的消息推送方 法在上述图1及上述可选实施例的基础上,详细介绍本发明的技术方案。且本实施例中,以 消息推送服务器设备采用图2所示的线程架构为例,介绍本发明的技术方案。如图3所示, 本实施例的消息推送方法,具体可以包括如下步骤:
[0108] 200、当用户通过移动终端登录应用时,移送终端与消息推送服务器设备之间建立 基于该用户和该应用的连接;
[0109] 例如用户A通过移动终端B登录应用C,在移动终端B与消息推送服务器设备之间 建立基于该用户A和该应用C的连接。若用户D通过移动终端E登录应用C,在移动终端E 与消息推送服务器设备之间也需要建立基于该用户D和该应用C的连接。亦即,每一条连 接必须包括用户、用户登录的应用和移动终端三个参数信息。该连接可以采用用户标识、应 用标识和终端的标识之间的对应关系表示。
[0110] 按照该步骤200可以各移动终端与推送服务器之间可以建立海量连接。
[0111] 201、消息推送服务器设备的接入线程监听到连接,并将连接压入到推送服务器设 备的工作线程的连接队列中;
[0112] 需要说明的是,消息推送服务器设备的主线程在工作之前预先设置多条工作线程 和接入线程。且接入线程在向工作线程的连接队列中压入监听到的连接时,采用轮询的方 式顺次向各个工作线程的连接队列中压入连接。
[0113] 202、消息推送服务器设备的各工作线程从对应的连接队列中获取连接,并将连接 存入全局哈希映射表中;
[0114] 该全局哈希映射表为所有工作线程共享的,该全局哈希映射表中每一条连接中包 括一条用户标识、应用标识和移动终端之间的对应关系。每个接入线程均将其获取到的连 接存入全局哈希映射表中。
[0115] 需要说明的是,推送服务器设备的工作线程同时还将连接存入工作线程的链接表 中;
[0116] 其中每一个工作线程即worker线程维护一个私有的链接表,该链接表中存储有 该工作线程正在处理的连接。
[0117] 同时,推送服务器设备的工作线程还对链接表中的连接进行管理,如推送服务器 设备的工作线程定期轮询链接表中的连接;并检查连接是否过期或者连接是否正常;当连 接过期或者连接不正常,推送服务器设备的工作线程删除连接。同时推送服务器设备的工 作线程删除全局哈希映射表中连接对应的映射关系,以保证所有在线连接的有效性,保证 了消息推送的效率。
[0118] 203、当推送服务器设备接收应用服务器发送的消息时,获取该应用的标识;
[0119] 204、推送服务器设备的工作线程判断全局哈希映射表中是否存在包括该应用的 标识的映射关系,当存在时,执行步骤205 ;否则执行步骤206 ;
[0120] 205、推送服务器设备的工作线程确定存在推送消息的连接;执行步骤207 ;
[0121] 206、推送服务器设备的工作线程确定不存在推送该消息的连接;执行步骤208 ;
[0122] 207、推送服务器设备的工作线程通过该连接向该连接对应的移动终端推送该消 息,以供该应用的客户端上登录的该用户接收该消息,结束。
[0123] 208、推送服务器设备的工作线程将该消息存入数据中心设备中;执行步骤209 ;
[0124] 209、推送服务器设备的接入线程检测到新接入的连接中包括推送该消息的连接 时,从数据中心设备中提取该消息;执行步骤207。
[0125] 其中,在步骤208之后,推送服务器设备的接入线程继续检测新接入的连接,并将 新接入的连接压入到推送服务器设备的工作线程的连接队列中,直到推送服务器设备的接 入线程检测到新接入的连接是推送该消息的连接时执行步骤209。
[0126] 本实施例的消息推送方法,不用基于平台的类型进行消息推送,丰富了消息推送 的方式,且使用灵活方便。且进一步地,上述实施例中的推送服务器可以设置在各运营商 的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问I0S平台的或者 Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺 陷,因此上述实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加 及时,消息推送的效率更高。
[0127] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
[0128] 实施例三
[0129] 图4为本发明实施例三提供的推送服务器设备的结构示意图。如图3所示,本实 施例的推送服务器设备,具体可以包括:接收模块10和处理模块11。
[0130] 其中接收模块10用于接收应用服务器发送的消息;该消息中包括应用的标识;处 理模块11与接收模块10连接,处理模块11用于根据接收模块10接收的消息中的应用的 标识,确定应用对应的连接;该连接为移动终端与推送服务器之间基于用户和应用的连接; 处理模块11还用于通过各连接,向该连接对应的移动终端推送消息,以供应用的客户端上 登录的用户接收消息。
[0131] 本实施例的推送服务器设备,通过采用上述模块实现消息推送的实现机制与上述 相关方法实施例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
[0132] 本实施例的推送服务器设备,通过采用上述模块实现根据应用的标识,确定应用 对应的连接,并根据应用的标识,确定应用对应的连接;然后推送服务器设备通过获取的各 连接,向每一连接对应的移动终端推送该消息,以供该应用的客户端上登录的该用户接收 该消息。通过采用本实施例的技术方案,不用基于平台的类型进行消息推送,丰富了消息推 送的方式,且使用灵活方便。且进一步地,本实施例中的推送服务器可以设置在各运营商 的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要访问I0S平台的或者 Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳定,推动不及时等的缺 陷,因此本实施例的消息推送方案,通过推送服务器发送消息的连接更加稳定,推送更加及 时,消息推送的效率更高。
[0133] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
[0134] 实施例四
[0135] 图5为实施例四提供的推送服务器设备的结构示意图。本实施例在上述图4所示 实施例的基础上,进一步更加详细地介绍本发明的技术方案。
[0136] 本实施例的推送服务器设备中处理模块11还用于在接收模块10接收应用服务器 发送的消息之后,处理模块11根据应用的标识,获取应用对应的连接之前,判断并确定存 在推送消息的连接。
[0137] 可选地,本实施例的推送服务器设备中处理模块11具体用于判断全局哈希映射 表中是否存在包括该应用的标识的映射关系;该映射关系为用户的标识、该应用的标识和 移动终端的标识的对应关系;当全局哈希映射表中包括该应用的标识的映射关系,确定存 在推送消息的连接,否则,确定不存在推送消息的连接。
[0138] 进一步可选地,本实施例的推送服务器设备中处理模块11还用于当确定不存在 推送消息的连接时,将消息存储在数据中心设备中。处理模块11还用于当推送服务器设备 确定存在推送消息的连接时,从数据中心设备中提取消息,并通过该连接向连接对应的移 动终端推送消息,以供应用的客户端上登录的用户接收消息。
[0139] 进一步可选地,本实施例的推送服务器设备中处理模块11包括工作线程子模块 111和接入线程子模块112。
[0140] 其中工作线程子模块112用于通过获取的连接向连接对应的移动终端推送消息。 工作线程子模块112与接收模块10连接,工作线程子模块112具体用于在接收模块10接 收应用服务器发送的消息之后,根据应用的标识,获取应用对应的连接,并进一步在获取应 用对应的连接之前,还判断并确定存在推送消息的连接。例如工作线程子模块112具体用 于判断全局哈希映射表中是否存在包括该应用的标识的映射关系;该映射关系为用户的标 识、该应用的标识和移动终端的标识的对应关系;当全局哈希映射表中包括该应用的标识 的映射关系,确定存在推送消息的连接,否则,确定不存在推送消息的连接。
[0141] 其中,接入线程子模块111与工作线程子模块112连接,接入线程子模块111用于 监听并接收移动终端发起的基于用户和应用的连接,并将连接压入工作线程子模块112的 连接队列中;工作线程子模块112还用于从连接队列中获取连接,并将连接存入全局哈希 映射表中。
[0142] 进一步可选地,本实施例的推送服务器设备中工作线程子模块112还用于将连接 存入工作线程子模块112的链接表中;
[0143] 进一步地,工作线程子模块112还用于定期轮询链接表中的连接;并检查连接是 否过期或者连接是否正常;当连接过期或者连接不正常,删除连接。工作线程子模块112还 用于删除全局哈希映射表中连接对应的映射关系,以保证连接的有效性,保证消息的正确 推送。
[0144] 进一步可选地,本实施例的推送服务器设备中处理模块11还包括主线程子模块 113。其中主线程子模块113分别与工作线程子模块112和接入线程子模块111连接,主线 程子模块113用于预先创建工作线程子模块112和和接入线程子模块111。
[0145] 本实施例的推送服务器设备,上述所有可选技术方案,可以采用可以结合的任意 方式结合形成本发明的可选实施例,在此不再赘述。
[0146] 本实施例的推送服务器设备,通过采用上述模块实现消息推送的实现机制与上述 相关方法实施例的实现机制相同,详细可以参考上述实施例的记载,在此不再赘述。
[0147] 本实施例的推送服务器设备,通过采用上述模块实现不用基于平台的类型进行消 息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,上述实施例中的推送服务 器可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需 要访问IOS平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不 稳定,推动不及时等的缺陷,因此上述实施例的消息推送方案,通过推送服务器发送消息的 连接更加稳定,推送更加及时,消息推送的效率更高。
[0148] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
[0149] 实施例五
[0150] 图6为本发明实施例五提供消息推送系统的结构示意图。如图5所示,本实施例 的消息推送系统包括应用服务器20、推送服务器设备30和移动终端40 ;推送服务器设备 30分别与应用服务器设备20和移动终端40通信连接。
[0151] 例如应用服务器20用于向推送服务器设备30发送要推送的消息,该消息中会携 带应用的标识。推送服务器设备30用于接收该消息;并根据该应用的标识,确定该应用对 应的连接;该连接为移动终端与推送服务器之间基于用户和该应用的连接;最后推送服务 器设备30还用于通过各所述连接,向该连接对应的移动终端推送该消息,以供该应用的客 户端上登录的用户接收该消息。
[0152] 本实施例中的推送服务器设备30与现有技术中的I0S平台和Android平台的 Push服务器不同,可以设置与移动终端设置在同一区域,如可以该移动终端所在的国家内。 而且该推送服务器不限制为台服务器,可以为一组集群服务器,部署在一个域名网站的下 面,而且可以对移动、联通、电信等不同的运营商有不同的机房部署。移动终端连接推送服 务器的域名网站,该域名网站的GSLB会针对当前移动终端的网络类型如电信、移动或联 通,自动选择对应的机房(如电信、移动或联通)的推送服务器设备。
[0153] 具体地,本实施例的推送服务器设备30具体采用如上实施例四或者五所述的推 送服务器设备,并可以采用上述实施例一或者二所述的消息推送方法实现消息的推送,详 细可以参考上述相关实施例的记载,在此不再赘述。
[0154] 本实施例的消息推送系统,通过采用上述技术方案,不用基于平台的类型进行消 息推送,丰富了消息推送的方式,且使用灵活方便。且进一步地,本实施例中的推送服务器 可以设置在各运营商的机房中,与移动终端在同一区域范围内,克服了现有技术中档需要 访问I0S平台的或者Android平台的Push服务器时,均需要访问跨国网络,导致连接不稳 定,推动不及时等的缺陷,因此本实施例的消息推送方案,通过推送服务器发送消息的连接 更加稳定,推送更加及时,消息推送的效率更高。
[0155] 而且现有的ios平台和android两个平台都有自己的协议,如果ios平台和 android平台的手机都要用push服务的话,使用者需要开发两套代码,且两个协议是不一 样的,且"不统一",接入成本相对较高。本发明实施例的技术方案的通用协议可以用以任何 平台,不需要为独立的平台单独开发,不需要额外的开发费用,接入成本较低。
[0156] 需要说明的是:上述实施例提供的消息推送服务器设备在消息推送业务时,仅以 上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不 同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部 或者部分功能。另外,上述实施例提供的消息推送服务器设备与消息推送的方法实施例属 于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0157] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0158] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件 来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读 存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0159] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种消息推送方法,其特征在于,所述方法包括: 推送服务器设备接收应用服务器发送的消息;所述消息中包括所述应用的标识; 所述推送服务器设备根据所述应用的标识,确定所述应用对应的连接;所述连接为移 动终端与所述推送服务器之间基于用户和所述应用的连接; 所述推送服务器设备通过各所述连接,向所述连接对应的所述移动终端推送所述消 息,以供所述应用的客户端上登录的所述用户接收所述消息。
2. 根据权利要求1所述的方法,其特征在于,所述推送服务器设备接收应用服务器发 送的消息之后,所述推送服务器设备根据所述应用的标识,获取所述应用对应的连接之前, 所述方法还包括: 所述推送服务器设备判断并确定存在推送所述消息的连接。
3. 根据权利要求2所述的方法,其特征在于,所述推送服务器设备判断并确定存在推 送所述消息的连接,包括: 所述推送服务器设备判断全局哈希映射表中是否存在包括所述应用的标识的映射关 系;所述映射关系为所述用户的标识、所述应用的标识和所述移动终端的标识的对应关 系; 当所述全局哈希映射表中包括所述应用的标识的映射关系,所述推送服务器设备确定 存在推送所述消息的连接,否则,所述推送服务器设备确定不存在推送所述消息的连接。
4. 根据权利要求3所述的方法,其特征在于,所述方法还包括: 当所述推送服务器设备确定不存在推送所述消息的连接时,所述推送服务器设备将所 述消息存储在数据中心设备中; 所述方法进一步还包括: 当所述推送服务器设备确定存在推送所述消息的连接时,所述推送服务器设备从所述 数据中心设备中提取所述消息; 所述推送服务器设备通过所述连接向所述连接对应的所述移动终端推送所述消息,以 供所述应用的客户端上登录的所述用户接收所述消息。
5. 根据权利要求3或4所述的方法,其特征在于,所述推送服务器设备通过所述连接向 所述连接对应的所述移动终端推送所述消息,包括: 所述推送服务器设备的工作线程,通过所述连接向所述连接对应的所述移动终端推送 所述消息。
6. 根据权利要求5所述的方法,其特征在于,所述推送服务器设备的工作线程,通过所 述连接向所述连接对应的所述移动终端推送所述消息之前,所述方法还包括: 所述推送服务器设备的接入线程监听并接收所述移动终端发起的基于所述用户和所 述应用的连接,并将所述连接压入所述推送服务器设备的工作线程的连接队列中; 所述推送服务器设备的工作线程从所述连接队列中获取所述连接,并将所述连接存入 所述全局哈希映射表中。
7. 根据权利要求6所述的方法,其特征在于,所述推送服务器设备的工作线程从所述 连接队列中获取所述连接之后,所述方法还包括: 所述推送服务器设备的工作线程将所述连接存入所述工作线程的链接表中; 进一步地,所述方法还包括: 所述推送服务器设备的工作线程定期轮询所述链接表中的所述连接; 所述推送服务器设备的工作线程检查所述连接是否过期或者所述连接是否正常; 当所述连接过期或者所述连接不正常,所述推送服务器设备的工作线程删除所述连 接; 所述推送服务器设备的工作线程删除所述全局哈希映射表中所述连接对应的映射关 系。
8. 根据权利要求6或7所述的方法,其特征在于,所述方法还包括: 所述推送服务器设备的主线程预先创建所述推送服务器设备的工作线程和所述推送 服务器设备的接入线程。
9. 一种推送服务器设备,其特征在于,所述设备包括: 接收模块,用于接收应用服务器发送的消息;所述消息中包括所述应用的标识; 处理模块,用于根据所述应用的标识,确定所述应用对应的连接;所述连接为移动终端 与所述推送服务器之间基于用户和所述应用的连接;所述处理模块,还用于通过各所述连 接,向所述连接对应的所述移动终端推送所述消息,以供所述应用的客户端上登录的所述 用户接收所述消息。
10. 根据权利要求8所述的设备,其特征在于,所述处理模块,还用于在所述接收模块 接收应用服务器发送的消息之后,所述处理模块根据所述应用的标识,获取所述应用对应 的连接之前,判断并确定存在推送所述消息的连接。
11. 根据权利要求10所述的设备,其特征在于,所述处理模块,具体用于判断全局哈 希映射表中是否存在包括所述应用的标识的映射关系;所述映射关系为所述用户的标识、 所述应用的标识和所述移动终端的标识的对应关系;当所述全局哈希映射表中包括所述应 用的标识的映射关系,确定存在推送所述消息的连接,否则,确定不存在推送所述消息的连 接。
12. 根据权利要求11所述的设备,其特征在于: 所述处理模块,还用于当确定不存在推送所述消息的连接时,将所述消息存储在数据 中心设备中; 所述处理模块,还用于当所述推送服务器设备确定存在推送所述消息的连接时,从所 述数据中心设备中提取所述消息,并通过所述连接向所述连接对应的所述移动终端推送所 述消息,以供所述应用的客户端上登录的所述用户接收所述消息。
13. 根据权利要求11或12所述的设备,其特征在于,所述处理模块,包括工作线程子模 块和接入线程子模块; 所述工作线程子模块,用于通过所述连接向所述连接对应的所述移动终端推送所述消 息; 所述接入线程子模块,用于监听并接收所述移动终端发起的基于所述用户和所述应用 的连接,并将所述连接压入所述工作线程子模块的连接队列中; 所述工作线程子模块,还用于从所述连接队列中获取所述连接,并将所述连接存入所 述全局哈希映射表中。
14. 根据权利要求13所述的设备,其特征在于: 所述工作线程子模块,还用于将所述连接存入所述工作线程子模块的链接表中; 进一步地,所述工作线程子模块,还用于定期轮询所述链接表中的所述连接;并检查所 述连接是否过期或者所述连接是否正常;当所述连接过期或者所述连接不正常,删除所述 连接; 所述工作线程子模块,还用于删除所述全局哈希映射表中所述连接对应的映射关系。
15. 根据权利要求13或14所述的设备,其特征在于,所述处理模块还包括: 所述主线程子模块,用于预先创建所述工作线程子模块和所述接入线程子模块。
16. -种消息推送系统,其特征在于,包括应用服务器、推送服务器设备和移动终端; 所述推送服务器设备分别与所述应用服务器和所述移动终端通信连接,所述推送服务器设 备采用如上权利要求9-15任一所述的推送服务器设备。
【文档编号】H04L12/58GK104144098SQ201310165603
【公开日】2014年11月12日 申请日期:2013年5月7日 优先权日:2013年5月7日
【发明者】周龄 申请人:腾讯科技(深圳)有限公司