一种消息推送方法及推送服务器的制造方法

文档序号:7772388阅读:145来源:国知局
一种消息推送方法及推送服务器的制造方法
【专利摘要】一种消息推送方法及推送服务器,该方法中:推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求,若查询存储有该用户标识关联的由该推送服务器生的Token1,且检测出与Token1所属终端已建立直连消息通道且在该通道上收到心跳数据,将消息内容通过该通道推送给Token1所属终端,反之将消息内容和消息推送系统生成的Token2推送给消息推送系统,使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端;该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,Token2所属终端与Token1所属终端为同一终端。保证消息推送的可靠性、及时性,简化应用服务器接口。
【专利说明】一种消息推送方法及推送服务器
【技术领域】
[0001 ] 本发明涉及通信【技术领域】,尤其涉及一种消息推送方法及推送服务器。
【背景技术】
[0002]随着3G技术、移动终端的发展,基于移动终端的各类应用得到了更为广泛的使用。其中,定期、及时的将用户感兴趣的消息推送到移动终端,能大大提升用户对应用的黏度、忠实度。在实际应用中,应用服务器可以分别建立与各类消息推送系统的连接,并分别将消息推送给各类消息推送系统,再由各类消息推送系统分别将消息推送给各自对应的类型终端。例如,应用服务器可以分别建立与iOS消息推送系统(如苹果APNS)、Android消息推送系统(如谷歌GCM)、Microsoft消息推送系统(如微软MPNS)的连接,并分别将消息推送给iOS消息推送系统、Android消息推送系统以及微软消息推送系统,再由iOS消息推送系统、Android消息推送系统以及Microsoft消息推送系统分别将消息推送给各自对应的iOS终端、Android终端以及Windows Phone终端。
[0003]在实践中发现,上述消息推送受制于各类消息推送系统的部署形态,无法保证消息推送的可靠性、及时性。例如,谷歌GCM由于未在中国大陆部署,导致经常无法正常推送消息给Android终端;另外,上述消息推送还要求应用服务器建立与各类消息推送系统的连接,而应用服务器与各类消息推送系统的连接接口通常不同,从而会使得应用服务器的接口较复杂。

【发明内容】

[0004]本发明实施例公开了一种消息推送方法及推送服务器,能够保证消息推送的可靠性、及时性,以及简化应用服务器的接口。
[0005]本发明实施例第一方面公开一种消息推送方法,包括:
[0006]推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
[0007]所述推送服务器响应所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl,若存储有,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据;
[0008]若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
[0009]在本发明实施例第一方面的第一种可能的实现方式中,所述推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,所述方法还包括:[0010]推送服务器接收终端通过应用服务器发送的获取终端标识请求;
[0011 ] 所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Tokenl,并通过获取终端标识响应发送给所述终端;
[0012]所述推送服务器接收所述终端发送的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ;
[0013]所述推送服务器记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系。
[0014]结合本发明实施例第一方面或本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第二种可能的实现方式中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括:
[0015]所述推送服务器缓存所述消息内容;
[0016]当在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,
[0017]当在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
[0018]结合本发明实施例第一方面或本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第三种可能的实现方式中,所述方法还包括:
[0019]所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
[0020]所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
[0021]本发明实施例第二方面公开一种消息推送方法,包括:
[0022]推送服务器接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
[0023]所述推送服务器响应所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;
[0024]所述推送服务器查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl,若存储有,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据;
[0025]若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
[0026]在本发明实施例第二方面的第一种可能的实现方式中,所述推送服务器接收应用服务器发送的消息推送请求之前,所述方法还包括:[0027]推送服务器接收终端通过应用服务器上报的获取终端标识请求;
[0028]所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Tokenl,并通过获取终端标识响应发送给所述终端;
[0029]所述推送服务器接收所述终端上报的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ;
[0030]所述推送服务器记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
[0031]结合本发明实施例第二方面或本发明实施例第二方面的第一种可能的实现方式,在本发明实施例第二方面的第二种可能的实现方式中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括:
[0032]所述推送服务器缓存所述消息内容;
[0033]当在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;
[0034]当在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
[0035]结合本发明实施例第二方面或本发明实施例第二方面的第二种可能的实现方式,在本发明实施例第二方面的第三种可能的实现方式中,所述方法还包括:
[0036]所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
[0037]所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
[0038]本发明实施例第三方面公开一种推送服务器,包括:
[0039]接收单元,用于接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
[0040]查询单元,用于响应所述接收单元接收到的所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl ;
[0041]检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据;
[0042]推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
[0043]在本发明实施例第三方面的第一种可能的实现方式中,
[0044]所述接收单元,还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
[0045]所述推送服务器还包括:
[0046]生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Tokenl ;
[0047]发送单元,用于将所述终端标识Tokenl通过获取终端标识响应发送给所述终端;
[0048]所述接收单元,还用于接收所述终端发送的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ;
[0049]所述推送服务器还包括:
[0050]记录单元,用于记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系。
[0051]结合本发明实施例第三方面或本发明实施例第三方面的第一种可能的实现方式,在本发明实施例第三方面的第二种可能的实现方式中,所述推送服务器还包括:
[0052]缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容;
[0053]所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,用于当所述检测单元在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
[0054]结合本发明实施例第三方面或本发明实施例第三方面的第一种可能的实现方式,在本发明实施例第三方面的第三种可能的实现方式中,
[0055]所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
[0056]所述推送服务器还包括:
[0057]划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
[0058]本发明实施例第四方面公开一种推送服务器,包括:
[0059]接收单元,用于接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
[0060]获取单元,用于响应所述接收单元接收到的所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;
[0061]查询单元,用于查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识 Tokenl ;
[0062]检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据;
[0063]推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
[0064]在本发明实施例第四方面的第一种可能的实现方式中,
[0065]所述接收单元,还用于在接收应用服务器发送的消息推送请求之前,接收终端通过应用服务器上报的获取终端标识请求;
[0066]所述推送服务器还包括:
[0067]生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Tokenl ;
[0068]发送单元,用于将所述终端标识Tokenl通过获取终端标识响应发送给所述终端;
[0069]所述接收单元,还用于接收所述终端上报的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ;
[0070]所述推送服务器还包括:
[0071]记录单元,用于记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
[0072]结合本发明实施例第四方面或本发明实施例第四方面的第一种可能的实现方式,在本发明实施例第四方面的第二种可能的实现方式中,所述推送服务器还包括:
[0073]缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容;
[0074]所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,还用于当所述检测单元在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
[0075]结合本发明实施例第四方面或本发明实施例第四方面的第一种可能的实现方式,在本发明实施例第四方面的第三种可能的实现方式中,
[0076]所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
[0077]所述推送服务器还包括:
[0078]划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送
[0079]本发明实施例中,推送服务器收到应用服务器发送的包括用户标识和消息内容的消息推送请求后,可以查询是否存储有该用户标识关联的由该推送服务器生的终端标识Tokenl,若存储有,可以检测与Tokenl所属终端之间是否已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,推送服务器可以将消息内容通过直连消息通道推送给Tokenl所属终端。可见,本发明实施例中消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,本发明实施例中消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。另外,本发明实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,推送服务器也可以通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端,而Token2所属终端与Tokenl所属终端为同一终端,这样可以更进一步地保证消息推送的可靠性、安全性。
【专利附图】

【附图说明】
[0080]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0081]图1是本发明实施例公开的一种消息推送方法的流程示意图;
[0082]图2是本发明实施例公开的另一种消息推送方法的流程示意图;
[0083]图3是本发明实施例公开的一种终端注册方法的流程示意图;
[0084]图4是本发明实施例公开的另一种消息推送方法的流程示意图;
[0085]图5是本发明实施例公开的另一种消息推送方法的流程示意图;
[0086]图6是本发明实施例公开的一种建立用户组标识与用户标识之间的关联关系的流程示意图;
[0087]图7是本发明实施例公开的另一种消息推送方法的流程示意图;
[0088]图8是本发明实施例公开的一种广播消息推送方法的流程示意图;
[0089]图9是本发明实施例公开的一种推送服务器的结构示意图;
[0090]图10是本发明实施例公开的另一种推送服务器的结构示意图;
[0091]图11是本发明实施例公开的另一种推送服务器的结构示意图;
[0092]图12是本发明实施例公开的一种消息推送系统的结构示意图。
【具体实施方式】
[0093]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0094]本发明实施例公开了一种消息推送方法及推送服务器,能够保证消息推送的可靠性、及时性,以及简化应用服务器的接口。以下分别进行详细说明。
[0095]请参阅图1,图1是本发明实施例公开一种消息推送方法的流程示意图。如图1所示,该消息推送方法可以包括以下步骤。
[0096]101、推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求。
[0097]本发明实施例中,用户标识可以是终端预先在应用服务器上注册的用户标识,也可以是终端用于登录应用服务器的用户标识。举例来说,用户标识可以包括用户邮箱、用户应用客户端账号(如微博账号、即时通讯账号等),本发明实施例不作具体限定。
[0098]102、推送服务器响应该消息推送请求,查询是否存储有该用户标识关联的由该推送服务器生的终端标识Tokenl,若存储有,执行步骤103 ;若未存储有,丢弃该消息推送请求,结束本流程。
[0099]本发明实施例中,终端标识Tokenl可以包括终端的媒体接入控制(MAC)地址、也可以包括终端的SM卡或ΠΜ卡中存储的国际移动用户识别码(International MobileSubscriber Identification Number, IMSI),也可以包括终端号码(如手机号码),本发明实施例不作限定。
[0100]本发明实施例中,推送服务器响应该消息推送请求,查询未存储有该用户标识关联的由该推送服务器生的终端标识Tokenl时,推送服务器可以认为该消息推送请求包括的用户标识为非法用户标识,推送服务器可以丢弃该消息推送请求,结束本流程。
[0101]103、推送服务器检测与Tokenl所属终端之间是否已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,则执行步骤104 ;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,则执行步骤105。
[0102]本发明实施例中,推送服务器检测与Tokenl所属终端之间已建立直连消息通道后,推送服务器可以周期性的接收Tokenl所属终端发送的心跳数据。
[0103]其中,Tokenl所属终端可以通过TCP/IP通讯协议发送心跳数据给推送服务器。
[0104]104、推送服务器将消息内容通过直连消息通道推送给Tokenl所属终端。
[0105]本发明实施例中,推送服务器与Tokenl所属终端之间可以采用TCP/IP通讯协议来建立直连消息通道。
[0106]105、推送服务器通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给该消息推送系统,以使该消息推送系统校验Token2合法后,由该消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0107]本发明实施例中,当终端类型为iOS终端时,对应的消息推送系统为iOS消息推送系统(如苹果APNS);当终端类型为Android终端时,对应的消息推送系统为Android消息推送系统(如谷歌GCM);当终端类型为Windows Phone终端时,对应的消息推送系统为Microsoft消息推送系统(如微软MPNS)。
[0108]本发明实施例中,该用户标识关联的终端类型所对应的消息推送系统为该终端生成的终端标识Token2可以包括终端的MAC地址、也可以包括终端的SIM卡或UIM卡中存储的IMSI,终端号码等本发明实施例不作限定。
[0109]作为一种可选的实施方式,推送服务器执行上述步骤101之前,还可以执行以下包括:
[0110]11)、推送服务器接收终端通过应用服务器发送的获取终端标识请求。
[0111]本发明实施例中,终端可以发送获取终端标识请求给应用服务器,应用服务器可以将终端发送的获取终端标识请求发送给推送服务器。其中,获取终端标识请求中可以携带用户标识。
[0112]12)、推送服务器响应该获取终端标识请求为终端生成终端标识Tokenl,并通过获取终端标识响应发送给终端。
[0113]本发明实施例中,推送服务器为终端生成终端标识Tokenl后,可以通过获取终端标识响应将终端标识Tokenl发送应用服务器,应用服务器再通过获取终端标识响应将终端标识Tokenl发送给终端。
[0114]13)、推送服务器接收终端发送的用户标识、终端类型、Tokenl以及终端类型所对应的消息推送系统为终端生成的终端标识T ο k e η 2。
[0115]本发明实施例中,终端可以发送用户标识、终端类型、Tokenl以及终端类型所对应的消息推送系统为终端生成的终端标识Token2给应用服务器,应用服务再将终端发送的用户标识、终端类型、Tokenl以及终端类型所对应的消息推送系统为终端生成的终端标识Token2发送给推送服务器。
[0116]14)、推送服务器记录用户标识、终端类型、Tokenl以及Token2的关联关系。
[0117]作为一种可选的实施方式,本发明实施例中,若检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,那么推送服务器还可以执行以下步骤:
[0118]21)、推送服务器缓存该消息内容。
[0119]22)、当在指定缓存时长内检测出与Tokenl所属终端之间已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据时,推送服务器将消息内容通过直连消息通道推送给Tokenl所属终端;或者,当在指定缓存时长内检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的消息内容。
[0120]本发明实施例中,消息内容的指定缓存时长、消息内容的缓存数量均可自由配置,如果消息内容的缓存时长超过指定缓存时长后,推送服务器可以删除缓存的消息内容;如果消息内容的缓存数量超过最大缓存量,推送服务器可以删除缓存最早的消息内容。
[0121]作为一种可选的实施方式,本发明实施例中,推送服务器还可以执行以下步骤:
[0122]31)、推送服务器接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息。
[0123]32、推送服务器将广播消息划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
[0124]本发明实施例中,推送服务器可以为每一个广播消息任务分配一个任务标号(如O?n_l,n为大于等于I的自然数),消息中心可以将该广播消息任务发送给相应的推送服务器后,相应的推送服务器可以对存储的终端标识进行哈希(hash)并对η取余,如果结果等于该广播消息任务的任务标识,那么相应的推送服务器可以将该广播消息推送给该终端标识所属终端。作为一种可选的实施方式,本发明实施例中,相应的推送服务器也可以将该广播消息推送给存储的所有终端标识所属终端。
[0125]在图1所描述的方法中,推送服务器收到应用服务器发送的包括用户标识和消息内容的消息推送请求后,可以查询是否存储有该用户标识关联的由该推送服务器生的终端标识Tokenl,若存储有,可以检测与Tokenl所属终端之间是否已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,推送服务器可以将消息内容通过直连消息通道推送给Tokenl所属终端。可见,图1所描述的方法中消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,图1所描述的方法中消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。另外,本发明实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,推送服务器也可以通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端,而Token2所属终端与Tokenl所属终端为同一终端,这样可以更进一步地保证消息推送的可靠性、安全性。
[0126]请参阅图2,图2是本发明实施例公开另一种消息推送方法的流程示意图。如图2所示,该消息推送方法可以包括以下步骤。
[0127]201、推送服务器接收应用服务器发送的消息推送请求,该消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容。
[0128]本发明实施例中,用户组标识用于标识一个用户组,这个用户组可以包括一个或多个用户标识,也即是说,该用户组标识可以关联一个或多个用户标识。
[0129]本发明实施例中,应用标识用于标识注册应用的一个用户组,这个用户组也可以包括一个或多个用户标识,也即是说,该应用标识也可以关联一个或多个用户标识。
[0130]本发明实施例中,用户标识可以是终端预先在应用服务器上注册的用户标识,也可以是终端用于登录应用服务器的用户标识。举例来说,用户标识可以包括用户邮箱、用户应用客户端账号(如微博账号、即时通讯账号等),本发明实施例不作具体限定。
[0131]202、推送服务器响应该消息推送请求,获取该用户组标识或应用标识关联的所有用户标识。
[0132]203、推送服务器查询是否存储有该用户标识关联的由该推送服务器生的终端标识Tokenl,若存储有,执行步骤204 ;若未存储有,丢弃该消息推送请求,结束本流程。
[0133]本发明实施例中,终端标识Tokenl可以包括终端的MAC地址、也可以包括终端的SM卡或ΠΜ卡中存储的MS1、终端号码等,或者,也可以通过以上信息计算出的能唯一标识终端的字符串作为终端标识Tokenl,本实施例不作限定。
[0134]本发明实施例中,推送服务器响应该消息推送请求,查询未存储有该用户标识关联的由该推送服务器生的终端标识Tokenl时,推送服务器可以认为该消息推送请求包括的用户标识为非法用户标识,可以丢弃该消息推送请求,结束本流程。
[0135]204、推送服务器检测与Tokenl所属终端之间是否已建立直连消息通道,且在直连消息通道上收到Tokenl所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,则执行步骤205 ;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,则执行步骤206。
[0136]本发明实施例中,推送服务器检测与Tokenl所属终端之间已建立直连消息通道后,推送服务器可以周期性的接收Tokenl所属终端发送的心跳数据。
[0137]205、推送服务器将消息内容通过直连消息通道推送给Tokenl所属终端。
[0138]本实施例中,推送服务器与Tokenl所属终端之间可以采用TCP/IP通讯协议来建立直连消息通道。
[0139]206、推送服务器通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给该消息推送系统,以使该消息推送系统校验Token2合法后,由该消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。[0140]本发明实施例中,当终端类型为iOS终端时,对应的消息推送系统为iOS消息推送系统(如苹果APNS);当终端类型为Android终端时,对应的消息推送系统为Android消息推送系统(如谷歌GCM);当终端类型为Windows Phone终端时,对应的消息推送系统为Microsoft消息推送系统(如微软MPNS)。
[0141]作为一种可选的实施方式,推送服务器执行上述步骤201之前,还可以执行以下包括:
[0142]41)、推送服务器接收终端通过应用服务器发送的获取终端标识请求。
[0143]本实施例中,终端可以发送获取终端标识请求给应用服务器,应用服务器可以将终端发送的获取终端标识请求发送给推送服务器。其中,获取终端标识请求中可以携带用户标识。
[0144]42)、推送服务器为终端生成终端标识Tokenl,并通过获取终端标识响应发送给终端。
[0145]本发明实施例中,推送服务器为终端生成终端标识Tokenl后,可以通过获取终端标识响应将终端标识Tokenl发送应用服务器,应用服务器再通过获取终端标识响应将终端标识Tokenl发送给终端。
[0146]43)、推送服务器接收终端发送的用户标识、终端类型、Tokenl以及终端类型所对应的消息推送系统为终端生成的终端标识T ο k e η 2。
[0147]本发明实施例中,终端可以发送用户标识、终端类型、Tokenl以及终端类型所对应的消息推送系统为终端生成的终端标识Token2给应用服务器,应用服务再将终端发送的用户标识、终端类型、Tokenl以及终端类型所对应的消息推送系统为终端生成的终端标识Token2发送给推送服务器。
[0148]44)、推送服务器记录用户标识、终端类型、Tokenl以及Token2的关联关系,以及记录用户标识与用户组标识或应用标识的关联关系。
[0149]作为一种可选的实施方式,本实施例中,若检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,那么推送服务器还可以执行以下步骤:
[0150]51)、推送服务器缓存该消息内容。
[0151]52)、当在指定缓存时长内检测出与Tokenl所属终端之间已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据时,推送服务器将消息内容通过直连消息通道推送给Tokenl所属终端;或者,当在指定缓存时长内检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的消息内容。
[0152]本发明实施例中,消息内容的指定缓存时长、消息内容的缓存数量均可自由配置,如果消息内容的缓存时长超过指定缓存时长后,推送服务器可以删除缓存的消息内容;如果消息内容的缓存数量超过最大缓存量,推送服务器可以删除缓存最早的消息内容。
[0153]作为一种可选的实施方式,本发明实施例中,推送服务器还可以执行以下步骤:
[0154]61)、推送服务器接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息。
[0155]62、推送服务器将广播消息划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
[0156]本实施例中,推送服务器可以为每一个广播消息任务分配一个任务标号(如O?n_l,n为大于等于I的自然数),这样消息中心将该广播消息任务发送给相应的推送服务器后,相应的推送服务器可以对存储的终端标识进行哈希(hash)并对η取余,如果结果等于该广播消息任务的任务标识,那么相应的推送服务器可以将该广播消息推送给该终端标识所属终端。作为一种可选的实施方式,本发明实施例中,相应的推送服务器也可以该广播消息推送给存储的所有终端标识所属终端。
[0157]在图2所描述的方法中,推送服务器收到应用服务器发送的包括用户组标识和消息内容,或包括应用标识和消息内容的消息推送请求后,可以先获取该用户组标识或应用标识关联的所有用户标识,并进一步查询是否存储有该用户标识关联的由该推送服务器生的终端标识Tokenl,若存储有,可以检测与Tokenl所属终端之间是否已建立直连消息通道,且在直连消息通道上收到Tokenl所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,推送服务器可以将消息内容通过直连消息通道推送给Tokenl所属终端。可见,图2所描述的方法中消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,图2所描述的方法中消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。另外,本发明实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,推送服务器也可以通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端,而Token2所属终端与Tokenl所属终端为同一终端,这样可以更进一步地保证消息推送的可靠性、安全性。
[0158]本发明实施例中,为了实现应用服务器通过推送服务器向终端推送消息,需要终端首先进行注册。其中,终端进行注册的方法如图3所示,该方法可以包括以下步骤:
[0159]301、终端发送获取Token请求给终端类型对应的消息推送系统。
[0160]本发明实施例中,当终端类型为iOS终端时,对应的消息推送系统为iOS消息推送系统(如苹果APNS);当终端类型为Android终端时,对应的消息推送系统为Android消息推送系统(如谷歌GCM);当终端类型为Windows Phone终端时,对应的消息推送系统为Microsoft消息推送系统(如微软MPNS)。
[0161]本发明实施例中,获取Token请求可以携带用户标识。
[0162]302、终端接收终端类型对应的消息推送系统返回的获取Token响应,该获取Token响应携带终端类型对应的消息推送系统为终端生成的Token2。
[0163]303、终端发送获取Token请求给应用服务器。
[0164]本发明实施例中,获取Token请求可以携带用户标识。
[0165]304、应用服务器将终端发送的获取Token请求发送给推送服务器。
[0166]305、推送服务器为终端生成Tokenl。
[0167]本发明实施例中,Tokenl和Token2所属终端为同一终端。
[0168]306、推送服务器发送获取Token响应给应用服务器,该获取Token响应携带有Tokenl ο
[0169]307、应用服务器将推送服务器发送的获取Token响应发送终端。[0170]308、终端发送注册请求至推送服务器。
[0171]本发明实施例中,该注册请求可以携带Tokenl。
[0172]309、终端接收推送服务器发送的注册完成响应。
[0173]310、终端发送心跳保活请求给推送服务器。
[0174]本发明实施例中,心跳保活请求可以携带心跳数据。
[0175]311、终端接收推送服务器发送的心跳保活响应。
[0176]本发明实施例中,通过上述步骤303?311可以建立终端与推送服务器之间的直连消息通道。
[0177]312、终端发送Token上报请求给应用服务器,其中,该Token上报请求可以携带用户标识、终端类型、Tokenl以及Token2。
[0178]313、应用服务器将终端发送的Token上报请求发送给推送服务器。
[0179]314、推送服务器记录用户标识、终端类型、Tokenl以及Token2的关联关系。
[0180]315、推送服务器发送Token上报响应给应用服务器。
[0181]316、应用服务器将推送服务器发送的Token上报响应发送给终端,以完成终端注
ΠΠ
/1/1 ο
[0182]本发明实施例中,终端完成了注册后,应用服务器可以统一通过推送服务器向终端推送消息,从而可以简化应用服务器的接口。其中,推送消息时以用户标识为依据进行推送,推送服务器根据用户标识可以获取该用户下的所有终端进行消息推送。如图4所示,该消息推送方法可以包括以下步骤:
[0183]401、应用服务器发送消息推送请求给推送服务器,该消息推送请求包括用户标识和消息内容。
[0184]402、推送服务器收到消息推送请求后,发送消息推送响应给应用服务器。
[0185]403、推送服务器查询存储的该用户标识关联的由该推送服务器生的终端标识Tokenl ο
[0186]本发明实施例中,该用户标识关联的由该推送服务器生的终端标识Tokenl可以是一个或多个,其中,当该用户标识关联的由该推送服务器生的终端标识Tokenl为多个时,该用户标识关联的由该推送服务器生的多个终端标识Tokenl互不相同,表示该用户下存在多个不同终端,进一步地,当该用户标识关联的由该推送服务器生的终端标识Tokenl为多个时,该用户标识关联的由该推送服务器生的多个终端标识Tokenl可以记录在终端标识列表中。
[0187]404、推送服务器检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,推送服务器通过消息推送请求将消息内容和消息推送系统生成的Token2推送给消息推送系统。
[0188]本发明实施例中,当Tokenl所属终端为iOS终端时,消息推送系统为iOS消息推送系统(如苹果APNS);当Tokenl所属终端为Android终端时,消息推送系统为Android消息推送系统(如谷歌GCM);当Tokenl所属终端为Windows Phone终端时,消息推送系统为Microsoft消息推送系统(如微软MPNS)。
[0189]405、消息推送系统收到推送服务器发送的消息推送请求后,发送消息推送响应给推送服务器。[0190]406、消息推送系统校验Token2合法后,可以通过消息推送请求将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0191]本发明实施例中,消息推送系统可以校验是否存储有Token2,如果存储有,则校验Token2合法,反之,校验Token2非法。
[0192]407、消息推送系统接收Token2所属终端发送的消息推送响应。
[0193]本发明实施例中,当推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据,那么上述步骤404?步骤407以虚线表示可以忽略不执行,并执行下面的步骤408?步骤409。
[0194]408、推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据时,通过消息推送请求将消息内容通过直连消息通道推送给Tokenl所属终端。
[0195]409、推送服务器接收Tokenl所属终端发送的消息推送响应。
[0196]本发明实施例中,当推送服务器检测出与Tokenl所属终端未已建立直连消息通道或已建立直连消息通道但未收到心跳数据时,那么上述步骤408?步骤409可以忽略不执行,并执行上面的步骤404?步骤407,确保消息推送的可靠性、及时性。
[0197]本发明实施例中,推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据时,可以将消息内容通过直连消息通道推送给Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,可以将消息内容和消息推送系统生成的Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0198]本发明实施例中,iOS终端可以通过APNS推送消息来推送消息内容,Android终端可以通过GCM推送消息来推送消息内容,Windows Phone终端可以通过MPNS推送消息来推送消息内容。
[0199]本发明实施例中,应用服务器可以通过推送服务器向一组终端推送消息,推送消息时推送服务器可以根据用户组标识获取该用户组下的所有用户标识,再根据用户标识获取该用户下的所有终端进行消息推送。如图5所示,该消息推送方法可以包括以下步骤:
[0200]501、应用服务器发送消息推送请求给推送服务器,该消息推送请求包括用户组标识和消息内容。
[0201]502、推送服务器收到消息推送请求后,发送消息推送响应给应用服务器。
[0202]503、推送服务器获取用户组标识关联的所有用户标识。
[0203]本发明实施例中,用户组标识关联的所有用户标识可以记录在用户标识列表中。
[0204]504、推送服务器查询存储的每个用户标识关联的由该推送服务器生的终端标识Tokenl ο
[0205]本发明实施例中,每个用户标识关联的由该推送服务器生的终端标识Tokenl可以是一个或多个,其中,当用户标识关联的由该推送服务器生的终端标识Tokenl为多个时,该用户标识关联的由该推送服务器生的多个终端标识Tokenl互不相同,表示该用户下存在多个不同终端。
[0206]505、推送服务器检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,推送服务器通过消息推送请求将消息内容和消息推送系统生成的Token2推送给消息推送系统。
[0207]本发明实施例中,当Tokenl所属终端为iOS终端时,消息推送系统为iOS消息推送系统(如苹果APNS);当Tokenl所属终端为Android终端时,消息推送系统为Android消息推送系统(如谷歌GCM);当Tokenl所属终端为Windows Phone终端时,消息推送系统为Microsoft消息推送系统(如微软MPNS)。
[0208]506、消息推送系统收到推送服务器发送的消息推送请求后,发送消息推送响应给推送服务器。
[0209]507、消息推送系统校验Token2合法后,可以通过消息推送请求将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0210]本发明实施例中,消息推送系统可以校验是否存储有Token2,如果存储有,则校验Token2合法,反之,校验Token2非法。
[0211]508、消息推送系统接收Token2所属终端发送的消息推送响应。
[0212]本发明实施例中,当推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据,那么上述步骤505?步骤508以虚线表示可以忽略不执行,并执行下面的步骤509?步骤510。
[0213]509、推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据时,通过消息推送请求将消息内容通过直连消息通道推送给Tokenl所属终端。
[0214]510、推送服务器接收Tokenl所属终端发送的消息推送响应。
[0215]本发明实施例中,当推送服务器检测出与Tokenl所属终端未已建立直连消息通道或已建立直连消息通道但未收到心跳数据时,那么上述步骤509?步骤510可以忽略不执行,并执行上面的步骤505?步骤508,确保消息推送的可靠性、及时性。
[0216]本发明实施例中,推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据时,可以将消息内容通过直连消息通道推送给Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,可以将消息内容和消息推送系统生成的Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0217]本发明实施例中,iOS终端可以通过APNS推送消息来推送消息内容,Android终端可以通过GCM推送消息来推送消息内容,Windows Phone终端可以通过MPNS推送消息来推送消息内容。
[0218]本发明实施例中,推送服务器可以预先建立用户组标识与用户标识之间的关联关系。其中,具体方法如图6所示,可以包括以下步骤:
[0219]601、应用服务器发送建立用户组标识与用户标识之间的关联关系的请求给推送服务器,其中,该请求中包括用户组标识与用户标识。
[0220]602、推送服务器记录用户组标识与用户标识的关联关系。
[0221 ] 本实施例中,推送服务器在执行步骤602之前,可以先检测用户组是否存在,如果存在,则执行步骤602 ;如果不存在,可以先创建用户组,再执行步骤602 ;其中,虚线表示创建用户组这一步骤是可以省略的。
[0222]603、推送服务器建立用户组标识与用户标识之间的关联关系的完成响应给应用服务器。
[0223]本发明实施例中,应用服务器可以通过推送服务器向一组终端推送消息,推送消息时推送服务器可以根据应用标识获取该应用标识下的所有用户标识,再根据用户标识获取该用户下的所有终端进行消息推送。如图7所示,该消息推送方法可以包括以下步骤:
[0224]701、应用服务器发送消息推送请求给推送服务器,该消息推送请求包括应用标识和消息内容。
[0225]本发明实施例中,应用服务器发送的包括应用标识和消息内容的消息推送请求也可以称为广播消息推送请求。
[0226]本发明实施例中,应用标识用于标识注册应用的一个用户组,这个用户组也可以包括一个或多个用户标识,也即是说,该应用标识也可以关联一个或多个用户标识。
[0227]702、推送服务器收到消息推送请求后,发送消息推送响应给应用服务器。
[0228]703、推送服务器获取应用标识关联的所有用户标识。
[0229]本发明实施例中,应用标识关联的所有用户标识可以记录在用户标识列表中。
[0230]704、推送服务器查询存储的每个用户标识关联的由该推送服务器生的终端标识Tokenl ο
[0231]本发明实施例中,每个用户标识关联的由该推送服务器生的终端标识Tokenl可以是一个或多个,其中,当用户标识关联的由该推送服务器生的终端标识Tokenl为多个时,该用户标识关联的由该推送服务器生的多个终端标识Tokenl互不相同,表示该用户下存在多个不同终端。
[0232]705、推送服务器检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,推送服务器通过消息推送请求将消息内容和消息推送系统生成的Token2推送给消息推送系统。
[0233]本发明实施例中,当Tokenl所属终端为iOS终端时,消息推送系统为iOS消息推送系统(如苹果APNS);当Tokenl所属终端为Android终端时,消息推送系统为Android消息推送系统(如谷歌GCM);当Tokenl所属终端为Windows Phone终端时,消息推送系统为Microsoft消息推送系统(如微软MPNS)。
[0234]706、消息推送系统收到推送服务器发送的消息推送请求后,发送消息推送响应给推送服务器。
[0235]707、消息推送系统校验Token2合法后,可以通过消息推送请求将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0236]本发明实施例中,消息推送系统可以校验是否存储有Token2,如果存储有,则校验Token2合法,反之,校验Token2非法。
[0237]708、消息推送系统接收Token2所属终端发送的消息推送响应。
[0238]本发明实施例中,当推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据,那么上述步骤705?步骤708以虚线表示可以忽略不执行,并执行下面的步骤709?步骤710。[0239]709、推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据时,通过消息推送请求将消息内容通过直连消息通道推送给Tokenl所属终端。
[0240]710、推送服务器接收Tokenl所属终端发送的消息推送响应。
[0241]本发明实施例中,当推送服务器检测出与Tokenl所属终端未已建立直连消息通道或已建立直连消息通道但未收到心跳数据时,那么上述步骤709?步骤710可以忽略不执行,并执行上面的步骤705?步骤708,确保消息推送的可靠性、及时性。
[0242]本发明实施例中,推送服务器检测出与Tokenl所属终端之间已建立直连消息通道且收到心跳数据时,可以将消息内容通过直连消息通道推送给Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,可以将消息内容和消息推送系统生成的Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0243]本发明实施例中,iOS终端可以通过APNS推送消息来推送消息内容,Android终端可以通过GCM推送消息来推送消息内容,Windows Phone终端可以通过MPNS推送消息来推送消息内容。
[0244]本发明实施例中,对于海量终端,发送广播消息时消息量通常是很大的,为了防止大量消息推送任务集中在某一个推送服务器,推送服务器接收到推送广播消息请求后,可以将一个广播消息拆分成η (比如1024)个广播消息任务,其中,η个广播消息任务的任务标号分别为O?η-1 ;进一步地,推送服务器可以将广播消息任务发布到消息中心,消息中心通知所有在线的推送服务器有新广播消息任务;在线的推送服务器接收到广播消息任务提醒后,如果本节点当前未处理广播消息任务,则从消息中心获取一个广播消息任务,根据广播消息任务的任务标号进行广播消息任务推送。具体地,推送服务器可以对存储的终端标识进行哈希(hash)并对η取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。作为一种可选的实施方式,本实施例中,推送服务器也可以将该广播消息推送给存储的所有终端标识所属终端。如图8所示,一种广播消息推送方法可以包括以下步骤:
[0245]801、推送服务器I接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息。
[0246]802、推送服务器I将广播消息划分成η个广播消息任务。
[0247]803、推送服务器I将包括η个广播消息任务的广播消息任务列表发送到消息中心。
[0248]804、消息中心将缓存η个广播消息任务。
[0249]805、消息中心发送新广播消息任务提醒到推送服务器I。
[0250]806、推送服务器I当前未处理广播消息任务时,发送获取广播消息任务请求到消息中心。
[0251]807、推送服务器I接收消息中心发送的获取广播消息任务响应,该获取广播消息任务响应包括广播消息任务。
[0252]808、推送服务器I将广播消息推送给终端。
[0253]具体地,推送服务器I可以对存储的终端标识进行哈希(hash)并对η取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。
[0254]本发明实施例中,推送服务器I也可以将该广播消息推送给存储的所有终端标识所属终端。
[0255]809、消息中心发送新广播消息任务提醒到推送服务器2。
[0256]810、推送服务器2当前未处理广播消息任务时,发送获取广播消息任务请求到消息中心。
[0257]811、推送服务器2接收消息中心发送的获取广播消息任务响应,该获取广播消息任务响应包括广播消息任务。
[0258]812、推送服务器2将广播消息送给终端。
[0259]具体地,推送服务器2可以对存储的终端标识进行哈希(hash)并对η取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。
[0260]本发明实施例中,推送服务器2也可以将该广播消息推送给存储的所有终端标识所属终端。
[0261]813、消息中心发送新广播消息任务提醒到推送服务器3。
[0262]814、推送服务器3当前未处理广播消息任务时,发送获取广播消息任务请求到消息中心。
[0263]815、推送服务器3接收消息中心发送的获取广播消息任务响应,该获取广播消息任务响应包括广播消息任务。
[0264]816、推送服务器3将广播消息任务推送给终端。
[0265]具体地,推送服务器3可以对存储的终端标识进行哈希(hash)并对η取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。
[0266]本发明实施例中,推送服务器3也可以将该广播消息推送给存储的所有终端标识所属终端。
[0267]本发明实施例中,为了保证消息推送的可靠性、及时性,当直连消息通道异常时,推送服务器可以先缓存消息,等到直连消息通道正常后,再通过直连消息通道将消息推送给终端;或者,当直连消息通道异常时,推送服务器可以通过推送消息系统将消息推送终端。
[0268]本发明实施例中,为了保证消息推送的可靠性、及时性,当直连消息通道正常时,如果推送服务器在直连消息通道上没有收到终端的心跳数据,推送服务器也可以先缓存消息,等到在直连消息通道上收到终端的心跳数据后,再通过直连消息通道将消息推送给终端;或者,当直连消息通道正常,但是在直连消息通道上没有收到终端的心跳数据时,推送服务器也可以通过推送消息系统将消息推送终端。
[0269]请参阅图9,图9是本发明实施例公开的一种推送服务器的结构示意图。如图9所示,该推送服务器可以包括:
[0270]接收单元901,用于接收应用服务器发送的包括用户标识和消息内容的消息推送请求;[0271]查询单元902,用于响应接收单元901接收到的消息推送请求,查询是否存储有该用户标识关联的由推送服务器生的终端标识Tokenl ;
[0272]检测单元903,用于在查询单元902的查询结果为存储有时,检测与Tokenl所属终端之间是否已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据;
[0273]推送单元904,用于在检测单元903检测出已建立直连消息通道且收到心跳数据时,将消息内容(由接收单元901接收到)通过直连消息通道推送给Tokenl所属终端;或者,用于在检测单元903检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终%5与Tokenl所属终为冋一终立而。
[0274]本发明实施例中,接收单元901还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
[0275]相对应,推送服务器还包括:
[0276]生成单元905,用于响应获取终端标识请求,为终端生成终端标识Tokenl ;
[0277]相应地,推送服务器还包括:
[0278]发送单元906,用于将生成单元905生成的终端标识Tokenl通过获取终端标识响应发送给终端;
[0279]相应地,接收单元901还用于接收终端发送的用户标识、终端类型、Tokenl以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2 ;
[0280]相应地,推送服务器还包括:
[0281]记录单元907,用于记录该用户标识、终端类型、Tokenl以及Token2 (由接收单元901接收到)的关联关系。
[0282]相应地,查询单元902具体用于响应接收单元901接收到的消息推送请求,查询记录单元907是否存储有该用户标识关联的由推送服务器生的终端标识Tokenl。
[0283]本发明实施例中,图9所示的推送服务器还包括:
[0284]缓存单元908,用于在检测单元903检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存消息内容;
[0285]相应地,推送单元904还用于当检测单元903在指定缓存时长内检测出与Tokenl所属终端之间已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据时,将缓存单元908缓存的消息内容通过直连消息通道推送给Tokenl所属终端;或者,用于当检测单元903在指定缓存时长内检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存单元908缓存的消息内容。
[0286]在一个实施例中,接收单元901还用于接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息;
[0287]相应地,推送服务器还包括:
[0288]划分发送单元909,用于将广播消息(由接收单元901接收到)划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
[0289]其中,实施图9所示的推送服务器使得消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
[0290]请参阅图10,图10是本发明实施例公开的另一种推送服务器的结构示意图。如图10所示,该推送服务器可以包括:
[0291]接收单元1001,用于接收应用服务器发送的消息推送请求,该消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
[0292]获取单元1002,用于响应接收单元1001接收到的消息推送请求,获取用户组标识或应用标识关联的所有用户标识;
[0293]查询单元1003,用于查询是否存储有该用户标识关联的由推送服务器生的终端标识 Tokenl ;
[0294]检测单元1004,用于在查询单元1003的查询结果为存储有时,检测与Tokenl所属终端之间是否已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据;
[0295]推送单元1005,用于在检测单元1004检测出已建立直连消息通道且收到心跳数据时,将消息内容通过直连消息通道推送给Tokenl所属终端;或者,用于在检测单元1004检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Tokenl所属终端为同一终端。
[0296]本发明实施例中,接收单元1001还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
[0297]相对应,推送服务器还包括:
[0298]生成单元1006,用于响应接收单元1001接收到的获取终端标识请求,为终端生成终端标识Tokenl ;
[0299]发送单元1007,用于将生成单元1006生成的终端标识Tokenl通过获取终端标识响应发送给终端;
[0300]相应地,接收单元1001还用于接收终端上报的用户标识、终端类型、Tokenl以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2 ;
[0301]相应地,推送服务器还包括:
[0302]记录单元1008,用于记录用户标识、终端类型、Tokenl以及Token2 (由接收单元1001接收到)的关联关系,以及记录用户标识与用户组标识或应用标识的关联关系。
[0303]相应地,获取单元1002具体用于响应接收单元1001接收到的消息推送请求,从记录单元1008中获取用户组标识或应用标识关联的所有用户标识;
[0304]相应地,查询单元1003,具体用于查询记录单元1008是否存储有该用户标识关联的由推送服务器生的终端标识Tokenl。
[0305]本发明实施例中,图10所示的推送服务器还包括:[0306]缓存单元1009,用于在检测单元1004检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存消息内容;
[0307]相应地,推送单元1005还用于当检测单元1004在指定缓存时长内检测出与Tokenl所属终端之间已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据时,将缓存单元1009缓存的消息内容通过直连消息通道推送给Tokenl所属终端;或者,还用于当检测单元1004在指定缓存时长内检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存单元1009缓存的消息内容。
[0308]本发明实施例中,接收单元1001还用于接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息;
[0309]相应地,推送服务器还包括:
[0310]划分发送单元1010,用于将广播消息(由接收单元1001接收到)划分成多个广播消息任务并发送给消息中心,由消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
[0311]其中,实施图10所示的推送服务器使得消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
[0312]请参阅图11,图11是本发明实施例公开的另一种推送服务器的结构示意图。如图11所示,该推送服务器1100可以包括:至少一个处理器1101,例如CPU,至少一个网络接口 1104,用户接口 1103,存储器1105,至少一个通信总线1102。通信总线1102用于实现这些组件之间的连接通信。其中,用户接口 1103可选的可以包括标准的有线接口、无线接口。网络接口 1104可选的可以包括标准的有线接口、无线接口。存储器1105可能包含高速RAM存储器,也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1105可选的可以包含至少一个位于远离前述处理器1101的存储装置。
[0313]在图11所示的推送服务器1100中,网络接口 1104可以接收应用服务器发送的推送消息请求;用户接口 1103可以与外部终端连接,用于推送消息给终端;而存储器1105可以用于存储程序,处理器1101可以用于调用存储器1105中存储的程序,并执行以下操作:
[0314]通过网络接口 1104接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
[0315]响应该消息推送请求,查询是否存储有该用户标识关联的由推送服务器生的终端标识Tokenl,若存储有,检测与Tokenl所属终端之间是否已建立直连消息通道且在直连消息通道上收到Tokenl所属终端发送的心跳数据;
[0316]若检测出已建立直连消息通道且收到心跳数据,将消息内容通过直连消息通道推送给Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终%5与Tokenl所属终为冋一终立而。
[0317]本实施例中,处理器1101接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,还执行以下操作:
[0318]接收终端通过应用服务器发送的获取终端标识请求;
[0319]为终端生成终端标识Tokenl,并通过获取终端标识响应发送给终端;
[0320]接收终端发送的用户标识、终端类型、Tokenl以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2 ;
[0321]记录用户标识、终端类型、Tokenl以及Token2的关联关系。
[0322]其中,处理器1101可以将用户标识、终端类型、Tokenl以及Token2的关联关系存储至存储器1105。
[0323]在本实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,处理器1101还可以执行以下操作:
[0324]缓存消息内容;
[0325]当在指定缓存时长内检测出与Tokenl所属终端之间已建立直连消息通道,且在直连消息通道上收到Tokenl所属终端发送的心跳数据时,将消息内容通过直连消息通道推送给Tokenl所属终端;或者,
[0326]当在指定缓存时长内检测出与Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的消息内容。
[0327]其中,处理器1101可以缓存消息内容至存储器1105。
[0328]本实施例中,处理器1101还可以执行以下操作:
[0329]通过网络接口 1104接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息;
[0330]将广播消息划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
[0331]本实施例中,处理器1101也可以用于调用存储器1105中存储的程序,并执行以下操作:
[0332]通过网络接口 1104接收应用服务器发送的消息推送请求,该消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
[0333]响应该消息推送请求,获取该用户组标识或应用标识关联的所有用户标识;
[0334]查询是否存储有该用户标识关联的由推送服务器生的终端标识Tokenl,若存储有,检测与Tokenl所属终端之间是否已建立直连消息通道,且在直连消息通道上收到Tokenl所属终端发送的心跳数据;
[0335]若检测出已建立直连消息通道且收到心跳数据,将消息内容通过直连消息通道推送给Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与所述Tokenl所属终端为同一终端。
[0336]本实施例中,处理器1101接收应用服务器发送的包括用户组标识和消息内容,或包括应用标识和消息内容的消息推送请求之前,还执行以下操作:
[0337]接收终端通过应用服务器发送的获取终端标识请求;[0338]为终端生成终端标识Tokenl,并通过获取终端标识响应发送给终端;
[0339]接收终端发送的用户标识、终端类型、Tokenl以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2 ;
[0340]记录用户标识、终端类型、Tokenl以及Token2的关联关系,以及记录该用户标识与用户组标识或应用标识的关联关系。
[0341]其中,处理器1101可以将用户标识、终端类型、Tokenl以及Token2的关联关系,以及该用户标识与用户组标识或应用标识的关联关系存储至存储器1105。
[0342]其中,实施图11所示的推送服务器使得消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
[0343]请参阅图12,图12是本发明实施例公开的一种消息推送系统的结构示意图。如图12所示,该消息推送系统包括:
[0344]应用服务器1201、推送服务器1202、iOS消息推送系统1203 (如苹果APNS)、Android消息推送系统1204 (如谷歌GCM)、Microsoft消息推送系统1205 (如微软MPNS)、iOS终端1206、Android终端1207以及Windows Phone终端1208,其中,应用服务器1201可以发送包括用户标识和消息内容的消息推送请求给推送服务器1202,或者,应用服务器1201可以发送包括用户组标识和消息内容,或包括应用标识和消息内容的消息推送请求给推送服务器1202,由推送服务器1202根据前面实施例中所描述的消息推送方法将消息推送至 iOS 终端 1206、Android 终端 1207 以及 Windows Phone 终端 1208。
[0345]其中,iOS消息推送系统1203 (如苹果APNS),用于向iOS终端1206推送消息。
[0346]其中,Android消息推送系统1204 (如谷歌GCM),用于向Android终端1207推送消息。
[0347]其中,Microsoft消息推送系统1205 (如微软MPNS),用于向Windows Phone终端1208推送消息。
[0348]其中,实施图12所示的消息推送系统使得消息推送不再受制于各类消息推送系统(如苹果APNS)、谷歌GCM、微软MPNS)的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
[0349]本发明中,推送服务器可以提供统一的单播、组播、广播消息推送接口,可以屏蔽向各类终端推送消息接口的差异,使应用服务器聚焦业务逻辑的实现。
[0350]本发明中,推送服务器提供直连消息通道能力,通过缓存、终端上线后重推送机制,可以保证消息可靠推送;并支持专网、公网部署,解决受限于各类消息推送系统部署形态的局限性。
[0351]本发明中,推送服务器提供通过直连消息通道推送消息失败后,可以自动通过消息推送系统推送消息,保证消息推送的即时性。
[0352]本发明中,推送服务器可以通过广播任务拆分的方式,优化消息广播机制,提高广播消息推送的即时性和可靠性。
[0353]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory, RAM)、磁盘或光盘等。
[0354]以上对本发明实施例公开的一种消除推送方法和推送服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种消息推送方法,其特征在于,包括: 推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求; 所述推送服务器响应所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl,若存储有,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据; 若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
2.根据权利要求1所述的消息推送方法,其特征在于,所述推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,所述方法还包括: 推送服务器接收终端通过应用服务器发送的获取终端标识请求; 所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Tokenl,并通过获取终端标识响应发送给所述终端; 所述推送服务器接收所述终端发送的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ; 所述推送服务器记录所 述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系O
3.根据权利要求1或2所述的消息推送方法,其特征在于,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括: 所述推送服务器缓存所述消息内容; 当在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者, 当在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
4.根据权利要求1或2所述的消息推送方法,其特征在于,所述方法还包括: 所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息; 所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
5.—种消息推送方法,其特征在于,包括: 推送服务器接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容; 所述推送服务器响应所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;所述推送服务器查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl,若存储有,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据; 若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
6.根据权利要求5所述的消息推送方法,其特征在于,所述推送服务器接收应用服务器发送的消息推送请求之前,所述方法还包括: 推送服务器接收终端通过应用服务器上报的获取终端标识请求; 所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Tokenl,并通过获取终端标识响应发送给所述终端; 所述推送服务器接收所述终端上报的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ; 所述推送服务器记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
7.根据权利要求5或6所述的消息推送方法,其特征在于,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括: 所述推送服务器缓存所述消息内容; 当在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端; 当在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
8.根据权利要求5或6所述的消息推送方法,其特征在于,所述方法还包括: 所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息; 所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
9.一种推送服务器,其特征在于,包括: 接收单元,用于接收应用服务器发送的包括用户标识和消息内容的消息推送请求; 查询单元,用于响应所述接收单元接收到的所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl ; 检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据;推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
10.根据权利要求9所述的推送服务器,其特征在于, 所述接收单元,还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求; 所述推送服务器还包括: 生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Tokenl ; 发送单元,用于将所述终端标识Tokenl通过获取终端标识响应发送给所述终端;所述接收单元,还用于接收所述终端发送的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ; 所述推送服务器还包括: 记录单元,用于记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系O
11.根据权利要求9或10所述的推送服务器,其特征在于,所述推送服务器还包括: 缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容; 所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,用于当所述检测单元在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
12.根据权利要求9或10所述的推送服务器,其特征在于, 所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息; 所述推送服务器还包括: 划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
13.—种推送服务器,其特征在于,包括: 接收单元,用于接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容; 获取单元,用于响应所述接收单元接收到的所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识; 查询单元,用于查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Tokenl ;检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Tokenl所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据; 推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Tokenl所属终端为同一终端。
14.根据权利要求13所述的推送服务器,其特征在于, 所述接收单元,还用于在接收应用服务器发送的消息推送请求之前,接收终端通过应用服务器上报的获取终端标识请求; 所述推送服务器还包括: 生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Tokenl ; 发送单元,用于将所述终端标识Tokenl通过获取终端标识响应发送给所述终端;所述接收单元,还用于接收所述终端上报的用户标识、终端类型、所述Tokenl以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2 ; 所述推送服务器还包括: 记录单元,用于记录所述用户标识、终端类型、所述Tokenl以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
15.根据权利要求13或14所述的推送服务器,其特征在于,所述推送服务器还包括: 缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容; 所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Tokenl所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Tokenl所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Tokenl所属终端;或者,还用于当所述检测单元在所述指定缓存时长内检测出与所述Tokenl所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
16.根据权利要求13或14所述的推送服务器,其特征在于, 所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息; 所述推送服务器还包括: 划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
【文档编号】H04W4/12GK103501486SQ201310456289
【公开日】2014年1月8日 申请日期:2013年9月29日 优先权日:2013年9月29日
【发明者】孙文敏 申请人:华为软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1