CN103501486A - 一种消息推送方法及推送服务器 - Google Patents
一种消息推送方法及推送服务器 Download PDFInfo
- Publication number
- CN103501486A CN103501486A CN201310456289.3A CN201310456289A CN103501486A CN 103501486 A CN103501486 A CN 103501486A CN 201310456289 A CN201310456289 A CN 201310456289A CN 103501486 A CN103501486 A CN 103501486A
- Authority
- CN
- China
- Prior art keywords
- terminal
- message
- push
- token1
- direct
- 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.)
- Granted
Links
Images
Abstract
一种消息推送方法及推送服务器,该方法中:推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求,若查询存储有该用户标识关联的由该推送服务器生的Token1,且检测出与Token1所属终端已建立直连消息通道且在该通道上收到心跳数据,将消息内容通过该通道推送给Token1所属终端,反之将消息内容和消息推送系统生成的Token2推送给消息推送系统,使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端;该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,Token2所属终端与Token1所属终端为同一终端。保证消息推送的可靠性、及时性,简化应用服务器接口。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种消息推送方法及推送服务器。
背景技术
随着3G技术、移动终端的发展,基于移动终端的各类应用得到了更为广泛的使用。其中,定期、及时的将用户感兴趣的消息推送到移动终端,能大大提升用户对应用的黏度、忠实度。在实际应用中,应用服务器可以分别建立与各类消息推送系统的连接,并分别将消息推送给各类消息推送系统,再由各类消息推送系统分别将消息推送给各自对应的类型终端。例如,应用服务器可以分别建立与iOS消息推送系统(如苹果APNS)、Android消息推送系统(如谷歌GCM)、Microsoft消息推送系统(如微软MPNS)的连接,并分别将消息推送给iOS消息推送系统、Android消息推送系统以及微软消息推送系统,再由iOS消息推送系统、Android消息推送系统以及Microsoft消息推送系统分别将消息推送给各自对应的iOS终端、Android终端以及Windows Phone终端。
在实践中发现,上述消息推送受制于各类消息推送系统的部署形态,无法保证消息推送的可靠性、及时性。例如,谷歌GCM由于未在中国大陆部署,导致经常无法正常推送消息给Android终端;另外,上述消息推送还要求应用服务器建立与各类消息推送系统的连接,而应用服务器与各类消息推送系统的连接接口通常不同,从而会使得应用服务器的接口较复杂。
发明内容
本发明实施例公开了一种消息推送方法及推送服务器,能够保证消息推送的可靠性、及时性,以及简化应用服务器的接口。
本发明实施例第一方面公开一种消息推送方法,包括:
推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
所述推送服务器响应所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1,若存储有,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
在本发明实施例第一方面的第一种可能的实现方式中,所述推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,所述方法还包括:
推送服务器接收终端通过应用服务器发送的获取终端标识请求;
所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Token1,并通过获取终端标识响应发送给所述终端;
所述推送服务器接收所述终端发送的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系。
结合本发明实施例第一方面或本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第二种可能的实现方式中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括:
所述推送服务器缓存所述消息内容;
当在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,
当在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
结合本发明实施例第一方面或本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第三种可能的实现方式中,所述方法还包括:
所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
本发明实施例第二方面公开一种消息推送方法,包括:
推送服务器接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
所述推送服务器响应所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;
所述推送服务器查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1,若存储有,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
在本发明实施例第二方面的第一种可能的实现方式中,所述推送服务器接收应用服务器发送的消息推送请求之前,所述方法还包括:
推送服务器接收终端通过应用服务器上报的获取终端标识请求;
所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Token1,并通过获取终端标识响应发送给所述终端;
所述推送服务器接收所述终端上报的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
结合本发明实施例第二方面或本发明实施例第二方面的第一种可能的实现方式,在本发明实施例第二方面的第二种可能的实现方式中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括:
所述推送服务器缓存所述消息内容;
当在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;
当在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
结合本发明实施例第二方面或本发明实施例第二方面的第二种可能的实现方式,在本发明实施例第二方面的第三种可能的实现方式中,所述方法还包括:
所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
本发明实施例第三方面公开一种推送服务器,包括:
接收单元,用于接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
查询单元,用于响应所述接收单元接收到的所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1;
检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
在本发明实施例第三方面的第一种可能的实现方式中,
所述接收单元,还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
所述推送服务器还包括:
生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Token1;
发送单元,用于将所述终端标识Token1通过获取终端标识响应发送给所述终端;
所述接收单元,还用于接收所述终端发送的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器还包括:
记录单元,用于记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系。
结合本发明实施例第三方面或本发明实施例第三方面的第一种可能的实现方式,在本发明实施例第三方面的第二种可能的实现方式中,所述推送服务器还包括:
缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容;
所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,用于当所述检测单元在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
结合本发明实施例第三方面或本发明实施例第三方面的第一种可能的实现方式,在本发明实施例第三方面的第三种可能的实现方式中,
所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器还包括:
划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
本发明实施例第四方面公开一种推送服务器,包括:
接收单元,用于接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
获取单元,用于响应所述接收单元接收到的所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;
查询单元,用于查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1;
检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
在本发明实施例第四方面的第一种可能的实现方式中,
所述接收单元,还用于在接收应用服务器发送的消息推送请求之前,接收终端通过应用服务器上报的获取终端标识请求;
所述推送服务器还包括:
生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Token1;
发送单元,用于将所述终端标识Token1通过获取终端标识响应发送给所述终端;
所述接收单元,还用于接收所述终端上报的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器还包括:
记录单元,用于记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
结合本发明实施例第四方面或本发明实施例第四方面的第一种可能的实现方式,在本发明实施例第四方面的第二种可能的实现方式中,所述推送服务器还包括:
缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容;
所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,还用于当所述检测单元在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存的所述消息内容。
结合本发明实施例第四方面或本发明实施例第四方面的第一种可能的实现方式,在本发明实施例第四方面的第三种可能的实现方式中,
所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器还包括:
划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送
本发明实施例中,推送服务器收到应用服务器发送的包括用户标识和消息内容的消息推送请求后,可以查询是否存储有该用户标识关联的由该推送服务器生的终端标识Token1,若存储有,可以检测与Token1所属终端之间是否已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,推送服务器可以将消息内容通过直连消息通道推送给Token1所属终端。可见,本发明实施例中消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,本发明实施例中消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。另外,本发明实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,推送服务器也可以通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端,而Token2所属终端与Token1所属终端为同一终端,这样可以更进一步地保证消息推送的可靠性、安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种消息推送方法的流程示意图;
图2是本发明实施例公开的另一种消息推送方法的流程示意图;
图3是本发明实施例公开的一种终端注册方法的流程示意图;
图4是本发明实施例公开的另一种消息推送方法的流程示意图;
图5是本发明实施例公开的另一种消息推送方法的流程示意图;
图6是本发明实施例公开的一种建立用户组标识与用户标识之间的关联关系的流程示意图;
图7是本发明实施例公开的另一种消息推送方法的流程示意图;
图8是本发明实施例公开的一种广播消息推送方法的流程示意图;
图9是本发明实施例公开的一种推送服务器的结构示意图;
图10是本发明实施例公开的另一种推送服务器的结构示意图;
图11是本发明实施例公开的另一种推送服务器的结构示意图;
图12是本发明实施例公开的一种消息推送系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种消息推送方法及推送服务器,能够保证消息推送的可靠性、及时性,以及简化应用服务器的接口。以下分别进行详细说明。
请参阅图1,图1是本发明实施例公开一种消息推送方法的流程示意图。如图1所示,该消息推送方法可以包括以下步骤。
101、推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求。
本发明实施例中,用户标识可以是终端预先在应用服务器上注册的用户标识,也可以是终端用于登录应用服务器的用户标识。举例来说,用户标识可以包括用户邮箱、用户应用客户端账号(如微博账号、即时通讯账号等),本发明实施例不作具体限定。
102、推送服务器响应该消息推送请求,查询是否存储有该用户标识关联的由该推送服务器生的终端标识Token1,若存储有,执行步骤103;若未存储有,丢弃该消息推送请求,结束本流程。
本发明实施例中,终端标识Token1可以包括终端的媒体接入控制(MAC)地址、也可以包括终端的SIM卡或UIM卡中存储的国际移动用户识别码(International Mobile Subscriber Identification Number,IMSI),也可以包括终端号码(如手机号码),本发明实施例不作限定。
本发明实施例中,推送服务器响应该消息推送请求,查询未存储有该用户标识关联的由该推送服务器生的终端标识Token1时,推送服务器可以认为该消息推送请求包括的用户标识为非法用户标识,推送服务器可以丢弃该消息推送请求,结束本流程。
103、推送服务器检测与Token1所属终端之间是否已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,则执行步骤104;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,则执行步骤105。
本发明实施例中,推送服务器检测与Token1所属终端之间已建立直连消息通道后,推送服务器可以周期性的接收Token1所属终端发送的心跳数据。
其中,Token1所属终端可以通过TCP/IP通讯协议发送心跳数据给推送服务器。
104、推送服务器将消息内容通过直连消息通道推送给Token1所属终端。
本发明实施例中,推送服务器与Token1所属终端之间可以采用TCP/IP通讯协议来建立直连消息通道。
105、推送服务器通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给该消息推送系统,以使该消息推送系统校验Token2合法后,由该消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,当终端类型为iOS终端时,对应的消息推送系统为iOS消息推送系统(如苹果APNS);当终端类型为Android终端时,对应的消息推送系统为Android消息推送系统(如谷歌GCM);当终端类型为WindowsPhone终端时,对应的消息推送系统为Microsoft消息推送系统(如微软MPNS)。
本发明实施例中,该用户标识关联的终端类型所对应的消息推送系统为该终端生成的终端标识Token2可以包括终端的MAC地址、也可以包括终端的SIM卡或UIM卡中存储的IMSI,终端号码等本发明实施例不作限定。
作为一种可选的实施方式,推送服务器执行上述步骤101之前,还可以执行以下包括:
11)、推送服务器接收终端通过应用服务器发送的获取终端标识请求。
本发明实施例中,终端可以发送获取终端标识请求给应用服务器,应用服务器可以将终端发送的获取终端标识请求发送给推送服务器。其中,获取终端标识请求中可以携带用户标识。
12)、推送服务器响应该获取终端标识请求为终端生成终端标识Token1,并通过获取终端标识响应发送给终端。
本发明实施例中,推送服务器为终端生成终端标识Token1后,可以通过获取终端标识响应将终端标识Token1发送应用服务器,应用服务器再通过获取终端标识响应将终端标识Token1发送给终端。
13)、推送服务器接收终端发送的用户标识、终端类型、Token1以及终端类型所对应的消息推送系统为终端生成的终端标识Token2。
本发明实施例中,终端可以发送用户标识、终端类型、Token1以及终端类型所对应的消息推送系统为终端生成的终端标识Token2给应用服务器,应用服务再将终端发送的用户标识、终端类型、Token1以及终端类型所对应的消息推送系统为终端生成的终端标识Token2发送给推送服务器。
14)、推送服务器记录用户标识、终端类型、Token1以及Token2的关联关系。
作为一种可选的实施方式,本发明实施例中,若检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,那么推送服务器还可以执行以下步骤:
21)、推送服务器缓存该消息内容。
22)、当在指定缓存时长内检测出与Token1所属终端之间已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据时,推送服务器将消息内容通过直连消息通道推送给Token1所属终端;或者,当在指定缓存时长内检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的消息内容。
本发明实施例中,消息内容的指定缓存时长、消息内容的缓存数量均可自由配置,如果消息内容的缓存时长超过指定缓存时长后,推送服务器可以删除缓存的消息内容;如果消息内容的缓存数量超过最大缓存量,推送服务器可以删除缓存最早的消息内容。
作为一种可选的实施方式,本发明实施例中,推送服务器还可以执行以下步骤:
31)、推送服务器接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息。
32、推送服务器将广播消息划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
本发明实施例中,推送服务器可以为每一个广播消息任务分配一个任务标号(如0~n-1,n为大于等于1的自然数),消息中心可以将该广播消息任务发送给相应的推送服务器后,相应的推送服务器可以对存储的终端标识进行哈希(hash)并对n取余,如果结果等于该广播消息任务的任务标识,那么相应的推送服务器可以将该广播消息推送给该终端标识所属终端。作为一种可选的实施方式,本发明实施例中,相应的推送服务器也可以将该广播消息推送给存储的所有终端标识所属终端。
在图1所描述的方法中,推送服务器收到应用服务器发送的包括用户标识和消息内容的消息推送请求后,可以查询是否存储有该用户标识关联的由该推送服务器生的终端标识Token1,若存储有,可以检测与Token1所属终端之间是否已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,推送服务器可以将消息内容通过直连消息通道推送给Token1所属终端。可见,图1所描述的方法中消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,图1所描述的方法中消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。另外,本发明实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,推送服务器也可以通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端,而Token2所属终端与Token1所属终端为同一终端,这样可以更进一步地保证消息推送的可靠性、安全性。
请参阅图2,图2是本发明实施例公开另一种消息推送方法的流程示意图。如图2所示,该消息推送方法可以包括以下步骤。
201、推送服务器接收应用服务器发送的消息推送请求,该消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容。
本发明实施例中,用户组标识用于标识一个用户组,这个用户组可以包括一个或多个用户标识,也即是说,该用户组标识可以关联一个或多个用户标识。
本发明实施例中,应用标识用于标识注册应用的一个用户组,这个用户组也可以包括一个或多个用户标识,也即是说,该应用标识也可以关联一个或多个用户标识。
本发明实施例中,用户标识可以是终端预先在应用服务器上注册的用户标识,也可以是终端用于登录应用服务器的用户标识。举例来说,用户标识可以包括用户邮箱、用户应用客户端账号(如微博账号、即时通讯账号等),本发明实施例不作具体限定。
202、推送服务器响应该消息推送请求,获取该用户组标识或应用标识关联的所有用户标识。
203、推送服务器查询是否存储有该用户标识关联的由该推送服务器生的终端标识Token1,若存储有,执行步骤204;若未存储有,丢弃该消息推送请求,结束本流程。
本发明实施例中,终端标识Token1可以包括终端的MAC地址、也可以包括终端的SIM卡或UIM卡中存储的IMSI、终端号码等,或者,也可以通过以上信息计算出的能唯一标识终端的字符串作为终端标识Token1,本实施例不作限定。
本发明实施例中,推送服务器响应该消息推送请求,查询未存储有该用户标识关联的由该推送服务器生的终端标识Token1时,推送服务器可以认为该消息推送请求包括的用户标识为非法用户标识,可以丢弃该消息推送请求,结束本流程。
204、推送服务器检测与Token1所属终端之间是否已建立直连消息通道,且在直连消息通道上收到Token1所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,则执行步骤205;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,则执行步骤206。
本发明实施例中,推送服务器检测与Token1所属终端之间已建立直连消息通道后,推送服务器可以周期性的接收Token1所属终端发送的心跳数据。
205、推送服务器将消息内容通过直连消息通道推送给Token1所属终端。
本实施例中,推送服务器与Token1所属终端之间可以采用TCP/IP通讯协议来建立直连消息通道。
206、推送服务器通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给该消息推送系统,以使该消息推送系统校验Token2合法后,由该消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,当终端类型为iOS终端时,对应的消息推送系统为iOS消息推送系统(如苹果APNS);当终端类型为Android终端时,对应的消息推送系统为Android消息推送系统(如谷歌GCM);当终端类型为WindowsPhone终端时,对应的消息推送系统为Microsoft消息推送系统(如微软MPNS)。
作为一种可选的实施方式,推送服务器执行上述步骤201之前,还可以执行以下包括:
41)、推送服务器接收终端通过应用服务器发送的获取终端标识请求。
本实施例中,终端可以发送获取终端标识请求给应用服务器,应用服务器可以将终端发送的获取终端标识请求发送给推送服务器。其中,获取终端标识请求中可以携带用户标识。
42)、推送服务器为终端生成终端标识Token1,并通过获取终端标识响应发送给终端。
本发明实施例中,推送服务器为终端生成终端标识Token1后,可以通过获取终端标识响应将终端标识Token1发送应用服务器,应用服务器再通过获取终端标识响应将终端标识Token1发送给终端。
43)、推送服务器接收终端发送的用户标识、终端类型、Token1以及终端类型所对应的消息推送系统为终端生成的终端标识Token2。
本发明实施例中,终端可以发送用户标识、终端类型、Token1以及终端类型所对应的消息推送系统为终端生成的终端标识Token2给应用服务器,应用服务再将终端发送的用户标识、终端类型、Token1以及终端类型所对应的消息推送系统为终端生成的终端标识Token2发送给推送服务器。
44)、推送服务器记录用户标识、终端类型、Token1以及Token2的关联关系,以及记录用户标识与用户组标识或应用标识的关联关系。
作为一种可选的实施方式,本实施例中,若检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,那么推送服务器还可以执行以下步骤:
51)、推送服务器缓存该消息内容。
52)、当在指定缓存时长内检测出与Token1所属终端之间已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据时,推送服务器将消息内容通过直连消息通道推送给Token1所属终端;或者,当在指定缓存时长内检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的消息内容。
本发明实施例中,消息内容的指定缓存时长、消息内容的缓存数量均可自由配置,如果消息内容的缓存时长超过指定缓存时长后,推送服务器可以删除缓存的消息内容;如果消息内容的缓存数量超过最大缓存量,推送服务器可以删除缓存最早的消息内容。
作为一种可选的实施方式,本发明实施例中,推送服务器还可以执行以下步骤:
61)、推送服务器接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息。
62、推送服务器将广播消息划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
本实施例中,推送服务器可以为每一个广播消息任务分配一个任务标号(如0~n-1,n为大于等于1的自然数),这样消息中心将该广播消息任务发送给相应的推送服务器后,相应的推送服务器可以对存储的终端标识进行哈希(hash)并对n取余,如果结果等于该广播消息任务的任务标识,那么相应的推送服务器可以将该广播消息推送给该终端标识所属终端。作为一种可选的实施方式,本发明实施例中,相应的推送服务器也可以该广播消息推送给存储的所有终端标识所属终端。
在图2所描述的方法中,推送服务器收到应用服务器发送的包括用户组标识和消息内容,或包括应用标识和消息内容的消息推送请求后,可以先获取该用户组标识或应用标识关联的所有用户标识,并进一步查询是否存储有该用户标识关联的由该推送服务器生的终端标识Token1,若存储有,可以检测与Token1所属终端之间是否已建立直连消息通道,且在直连消息通道上收到Token1所属终端发送的心跳数据,若检测出已建立直连消息通道且收到心跳数据,推送服务器可以将消息内容通过直连消息通道推送给Token1所属终端。可见,图2所描述的方法中消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,图2所描述的方法中消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。另外,本发明实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,推送服务器也可以通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后将消息内容推送至Token2所属终端,而Token2所属终端与Token1所属终端为同一终端,这样可以更进一步地保证消息推送的可靠性、安全性。
本发明实施例中,为了实现应用服务器通过推送服务器向终端推送消息,需要终端首先进行注册。其中,终端进行注册的方法如图3所示,该方法可以包括以下步骤:
301、终端发送获取Token请求给终端类型对应的消息推送系统。
本发明实施例中,当终端类型为iOS终端时,对应的消息推送系统为iOS消息推送系统(如苹果APNS);当终端类型为Android终端时,对应的消息推送系统为Android消息推送系统(如谷歌GCM);当终端类型为WindowsPhone终端时,对应的消息推送系统为Microsoft消息推送系统(如微软MPNS)。
本发明实施例中,获取Token请求可以携带用户标识。
302、终端接收终端类型对应的消息推送系统返回的获取Token响应,该获取Token响应携带终端类型对应的消息推送系统为终端生成的Token2。
303、终端发送获取Token请求给应用服务器。
本发明实施例中,获取Token请求可以携带用户标识。
304、应用服务器将终端发送的获取Token请求发送给推送服务器。
305、推送服务器为终端生成Token1。
本发明实施例中,Token1和Token2所属终端为同一终端。
306、推送服务器发送获取Token响应给应用服务器,该获取Token响应携带有Token1。
307、应用服务器将推送服务器发送的获取Token响应发送终端。
308、终端发送注册请求至推送服务器。
本发明实施例中,该注册请求可以携带Token1。
309、终端接收推送服务器发送的注册完成响应。
310、终端发送心跳保活请求给推送服务器。
本发明实施例中,心跳保活请求可以携带心跳数据。
311、终端接收推送服务器发送的心跳保活响应。
本发明实施例中,通过上述步骤303~311可以建立终端与推送服务器之间的直连消息通道。
312、终端发送Token上报请求给应用服务器,其中,该Token上报请求可以携带用户标识、终端类型、Token1以及Token2。
313、应用服务器将终端发送的Token上报请求发送给推送服务器。
314、推送服务器记录用户标识、终端类型、Token1以及Token2的关联关系。
315、推送服务器发送Token上报响应给应用服务器。
316、应用服务器将推送服务器发送的Token上报响应发送给终端,以完成终端注册。
本发明实施例中,终端完成了注册后,应用服务器可以统一通过推送服务器向终端推送消息,从而可以简化应用服务器的接口。其中,推送消息时以用户标识为依据进行推送,推送服务器根据用户标识可以获取该用户下的所有终端进行消息推送。如图4所示,该消息推送方法可以包括以下步骤:
401、应用服务器发送消息推送请求给推送服务器,该消息推送请求包括用户标识和消息内容。
402、推送服务器收到消息推送请求后,发送消息推送响应给应用服务器。
403、推送服务器查询存储的该用户标识关联的由该推送服务器生的终端标识Token1。
本发明实施例中,该用户标识关联的由该推送服务器生的终端标识Token1可以是一个或多个,其中,当该用户标识关联的由该推送服务器生的终端标识Token1为多个时,该用户标识关联的由该推送服务器生的多个终端标识Token1互不相同,表示该用户下存在多个不同终端,进一步地,当该用户标识关联的由该推送服务器生的终端标识Token1为多个时,该用户标识关联的由该推送服务器生的多个终端标识Token1可以记录在终端标识列表中。
404、推送服务器检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,推送服务器通过消息推送请求将消息内容和消息推送系统生成的Token2推送给消息推送系统。
本发明实施例中,当Token1所属终端为iOS终端时,消息推送系统为iOS消息推送系统(如苹果APNS);当Token1所属终端为Android终端时,消息推送系统为Android消息推送系统(如谷歌GCM);当Token1所属终端为Windows Phone终端时,消息推送系统为Microsoft消息推送系统(如微软MPNS)。
405、消息推送系统收到推送服务器发送的消息推送请求后,发送消息推送响应给推送服务器。
406、消息推送系统校验Token2合法后,可以通过消息推送请求将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,消息推送系统可以校验是否存储有Token2,如果存储有,则校验Token2合法,反之,校验Token2非法。
407、消息推送系统接收Token2所属终端发送的消息推送响应。
本发明实施例中,当推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据,那么上述步骤404~步骤407以虚线表示可以忽略不执行,并执行下面的步骤408~步骤409。
408、推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据时,通过消息推送请求将消息内容通过直连消息通道推送给Token1所属终端。
409、推送服务器接收Token1所属终端发送的消息推送响应。
本发明实施例中,当推送服务器检测出与Token1所属终端未已建立直连消息通道或已建立直连消息通道但未收到心跳数据时,那么上述步骤408~步骤409可以忽略不执行,并执行上面的步骤404~步骤407,确保消息推送的可靠性、及时性。
本发明实施例中,推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据时,可以将消息内容通过直连消息通道推送给Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,可以将消息内容和消息推送系统生成的Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,iOS终端可以通过APNS推送消息来推送消息内容,Android终端可以通过GCM推送消息来推送消息内容,Windows Phone终端可以通过MPNS推送消息来推送消息内容。
本发明实施例中,应用服务器可以通过推送服务器向一组终端推送消息,推送消息时推送服务器可以根据用户组标识获取该用户组下的所有用户标识,再根据用户标识获取该用户下的所有终端进行消息推送。如图5所示,该消息推送方法可以包括以下步骤:
501、应用服务器发送消息推送请求给推送服务器,该消息推送请求包括用户组标识和消息内容。
502、推送服务器收到消息推送请求后,发送消息推送响应给应用服务器。
503、推送服务器获取用户组标识关联的所有用户标识。
本发明实施例中,用户组标识关联的所有用户标识可以记录在用户标识列表中。
504、推送服务器查询存储的每个用户标识关联的由该推送服务器生的终端标识Token1。
本发明实施例中,每个用户标识关联的由该推送服务器生的终端标识Token1可以是一个或多个,其中,当用户标识关联的由该推送服务器生的终端标识Token1为多个时,该用户标识关联的由该推送服务器生的多个终端标识Token1互不相同,表示该用户下存在多个不同终端。
505、推送服务器检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,推送服务器通过消息推送请求将消息内容和消息推送系统生成的Token2推送给消息推送系统。
本发明实施例中,当Token1所属终端为iOS终端时,消息推送系统为iOS消息推送系统(如苹果APNS);当Token1所属终端为Android终端时,消息推送系统为Android消息推送系统(如谷歌GCM);当Token1所属终端为Windows Phone终端时,消息推送系统为Microsoft消息推送系统(如微软MPNS)。
506、消息推送系统收到推送服务器发送的消息推送请求后,发送消息推送响应给推送服务器。
507、消息推送系统校验Token2合法后,可以通过消息推送请求将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,消息推送系统可以校验是否存储有Token2,如果存储有,则校验Token2合法,反之,校验Token2非法。
508、消息推送系统接收Token2所属终端发送的消息推送响应。
本发明实施例中,当推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据,那么上述步骤505~步骤508以虚线表示可以忽略不执行,并执行下面的步骤509~步骤510。
509、推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据时,通过消息推送请求将消息内容通过直连消息通道推送给Token1所属终端。
510、推送服务器接收Token1所属终端发送的消息推送响应。
本发明实施例中,当推送服务器检测出与Token1所属终端未已建立直连消息通道或已建立直连消息通道但未收到心跳数据时,那么上述步骤509~步骤510可以忽略不执行,并执行上面的步骤505~步骤508,确保消息推送的可靠性、及时性。
本发明实施例中,推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据时,可以将消息内容通过直连消息通道推送给Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,可以将消息内容和消息推送系统生成的Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,iOS终端可以通过APNS推送消息来推送消息内容,Android终端可以通过GCM推送消息来推送消息内容,Windows Phone终端可以通过MPNS推送消息来推送消息内容。
本发明实施例中,推送服务器可以预先建立用户组标识与用户标识之间的关联关系。其中,具体方法如图6所示,可以包括以下步骤:
601、应用服务器发送建立用户组标识与用户标识之间的关联关系的请求给推送服务器,其中,该请求中包括用户组标识与用户标识。
602、推送服务器记录用户组标识与用户标识的关联关系。
本实施例中,推送服务器在执行步骤602之前,可以先检测用户组是否存在,如果存在,则执行步骤602;如果不存在,可以先创建用户组,再执行步骤602;其中,虚线表示创建用户组这一步骤是可以省略的。
603、推送服务器建立用户组标识与用户标识之间的关联关系的完成响应给应用服务器。
本发明实施例中,应用服务器可以通过推送服务器向一组终端推送消息,推送消息时推送服务器可以根据应用标识获取该应用标识下的所有用户标识,再根据用户标识获取该用户下的所有终端进行消息推送。如图7所示,该消息推送方法可以包括以下步骤:
701、应用服务器发送消息推送请求给推送服务器,该消息推送请求包括应用标识和消息内容。
本发明实施例中,应用服务器发送的包括应用标识和消息内容的消息推送请求也可以称为广播消息推送请求。
本发明实施例中,应用标识用于标识注册应用的一个用户组,这个用户组也可以包括一个或多个用户标识,也即是说,该应用标识也可以关联一个或多个用户标识。
702、推送服务器收到消息推送请求后,发送消息推送响应给应用服务器。
703、推送服务器获取应用标识关联的所有用户标识。
本发明实施例中,应用标识关联的所有用户标识可以记录在用户标识列表中。
704、推送服务器查询存储的每个用户标识关联的由该推送服务器生的终端标识Token1。
本发明实施例中,每个用户标识关联的由该推送服务器生的终端标识Token1可以是一个或多个,其中,当用户标识关联的由该推送服务器生的终端标识Token1为多个时,该用户标识关联的由该推送服务器生的多个终端标识Token1互不相同,表示该用户下存在多个不同终端。
705、推送服务器检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,推送服务器通过消息推送请求将消息内容和消息推送系统生成的Token2推送给消息推送系统。
本发明实施例中,当Token1所属终端为iOS终端时,消息推送系统为iOS消息推送系统(如苹果APNS);当Token1所属终端为Android终端时,消息推送系统为Android消息推送系统(如谷歌GCM);当Token1所属终端为Windows Phone终端时,消息推送系统为Microsoft消息推送系统(如微软MPNS)。
706、消息推送系统收到推送服务器发送的消息推送请求后,发送消息推送响应给推送服务器。
707、消息推送系统校验Token2合法后,可以通过消息推送请求将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,消息推送系统可以校验是否存储有Token2,如果存储有,则校验Token2合法,反之,校验Token2非法。
708、消息推送系统接收Token2所属终端发送的消息推送响应。
本发明实施例中,当推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据,那么上述步骤705~步骤708以虚线表示可以忽略不执行,并执行下面的步骤709~步骤710。
709、推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据时,通过消息推送请求将消息内容通过直连消息通道推送给Token1所属终端。
710、推送服务器接收Token1所属终端发送的消息推送响应。
本发明实施例中,当推送服务器检测出与Token1所属终端未已建立直连消息通道或已建立直连消息通道但未收到心跳数据时,那么上述步骤709~步骤710可以忽略不执行,并执行上面的步骤705~步骤708,确保消息推送的可靠性、及时性。
本发明实施例中,推送服务器检测出与Token1所属终端之间已建立直连消息通道且收到心跳数据时,可以将消息内容通过直连消息通道推送给Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,可以将消息内容和消息推送系统生成的Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,iOS终端可以通过APNS推送消息来推送消息内容,Android终端可以通过GCM推送消息来推送消息内容,Windows Phone终端可以通过MPNS推送消息来推送消息内容。
本发明实施例中,对于海量终端,发送广播消息时消息量通常是很大的,为了防止大量消息推送任务集中在某一个推送服务器,推送服务器接收到推送广播消息请求后,可以将一个广播消息拆分成n(比如1024)个广播消息任务,其中,n个广播消息任务的任务标号分别为0~n-1;进一步地,推送服务器可以将广播消息任务发布到消息中心,消息中心通知所有在线的推送服务器有新广播消息任务;在线的推送服务器接收到广播消息任务提醒后,如果本节点当前未处理广播消息任务,则从消息中心获取一个广播消息任务,根据广播消息任务的任务标号进行广播消息任务推送。具体地,推送服务器可以对存储的终端标识进行哈希(hash)并对n取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。作为一种可选的实施方式,本实施例中,推送服务器也可以将该广播消息推送给存储的所有终端标识所属终端。如图8所示,一种广播消息推送方法可以包括以下步骤:
801、推送服务器1接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息。
802、推送服务器1将广播消息划分成n个广播消息任务。
803、推送服务器1将包括n个广播消息任务的广播消息任务列表发送到消息中心。
804、消息中心将缓存n个广播消息任务。
805、消息中心发送新广播消息任务提醒到推送服务器1。
806、推送服务器1当前未处理广播消息任务时,发送获取广播消息任务请求到消息中心。
807、推送服务器1接收消息中心发送的获取广播消息任务响应,该获取广播消息任务响应包括广播消息任务。
808、推送服务器1将广播消息推送给终端。
具体地,推送服务器1可以对存储的终端标识进行哈希(hash)并对n取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。
本发明实施例中,推送服务器1也可以将该广播消息推送给存储的所有终端标识所属终端。
809、消息中心发送新广播消息任务提醒到推送服务器2。
810、推送服务器2当前未处理广播消息任务时,发送获取广播消息任务请求到消息中心。
811、推送服务器2接收消息中心发送的获取广播消息任务响应,该获取广播消息任务响应包括广播消息任务。
812、推送服务器2将广播消息送给终端。
具体地,推送服务器2可以对存储的终端标识进行哈希(hash)并对n取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。
本发明实施例中,推送服务器2也可以将该广播消息推送给存储的所有终端标识所属终端。
813、消息中心发送新广播消息任务提醒到推送服务器3。
814、推送服务器3当前未处理广播消息任务时,发送获取广播消息任务请求到消息中心。
815、推送服务器3接收消息中心发送的获取广播消息任务响应,该获取广播消息任务响应包括广播消息任务。
816、推送服务器3将广播消息任务推送给终端。
具体地,推送服务器3可以对存储的终端标识进行哈希(hash)并对n取余,如果结果等于该广播消息任务的任务标识,那么推送服务器可以将该广播消息推送给该终端标识所属终端。
本发明实施例中,推送服务器3也可以将该广播消息推送给存储的所有终端标识所属终端。
本发明实施例中,为了保证消息推送的可靠性、及时性,当直连消息通道异常时,推送服务器可以先缓存消息,等到直连消息通道正常后,再通过直连消息通道将消息推送给终端;或者,当直连消息通道异常时,推送服务器可以通过推送消息系统将消息推送终端。
本发明实施例中,为了保证消息推送的可靠性、及时性,当直连消息通道正常时,如果推送服务器在直连消息通道上没有收到终端的心跳数据,推送服务器也可以先缓存消息,等到在直连消息通道上收到终端的心跳数据后,再通过直连消息通道将消息推送给终端;或者,当直连消息通道正常,但是在直连消息通道上没有收到终端的心跳数据时,推送服务器也可以通过推送消息系统将消息推送终端。
请参阅图9,图9是本发明实施例公开的一种推送服务器的结构示意图。如图9所示,该推送服务器可以包括:
接收单元901,用于接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
查询单元902,用于响应接收单元901接收到的消息推送请求,查询是否存储有该用户标识关联的由推送服务器生的终端标识Token1;
检测单元903,用于在查询单元902的查询结果为存储有时,检测与Token1所属终端之间是否已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据;
推送单元904,用于在检测单元903检测出已建立直连消息通道且收到心跳数据时,将消息内容(由接收单元901接收到)通过直连消息通道推送给Token1所属终端;或者,用于在检测单元903检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,接收单元901还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
相对应,推送服务器还包括:
生成单元905,用于响应获取终端标识请求,为终端生成终端标识Token1;
相应地,推送服务器还包括:
发送单元906,用于将生成单元905生成的终端标识Token1通过获取终端标识响应发送给终端;
相应地,接收单元901还用于接收终端发送的用户标识、终端类型、Token1以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2;
相应地,推送服务器还包括:
记录单元907,用于记录该用户标识、终端类型、Token1以及Token2(由接收单元901接收到)的关联关系。
相应地,查询单元902具体用于响应接收单元901接收到的消息推送请求,查询记录单元907是否存储有该用户标识关联的由推送服务器生的终端标识Token1。
本发明实施例中,图9所示的推送服务器还包括:
缓存单元908,用于在检测单元903检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存消息内容;
相应地,推送单元904还用于当检测单元903在指定缓存时长内检测出与Token1所属终端之间已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据时,将缓存单元908缓存的消息内容通过直连消息通道推送给Token1所属终端;或者,用于当检测单元903在指定缓存时长内检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存单元908缓存的消息内容。
在一个实施例中,接收单元901还用于接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息;
相应地,推送服务器还包括:
划分发送单元909,用于将广播消息(由接收单元901接收到)划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
其中,实施图9所示的推送服务器使得消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
请参阅图10,图10是本发明实施例公开的另一种推送服务器的结构示意图。如图10所示,该推送服务器可以包括:
接收单元1001,用于接收应用服务器发送的消息推送请求,该消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
获取单元1002,用于响应接收单元1001接收到的消息推送请求,获取用户组标识或应用标识关联的所有用户标识;
查询单元1003,用于查询是否存储有该用户标识关联的由推送服务器生的终端标识Token1;
检测单元1004,用于在查询单元1003的查询结果为存储有时,检测与Token1所属终端之间是否已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据;
推送单元1005,用于在检测单元1004检测出已建立直连消息通道且收到心跳数据时,将消息内容通过直连消息通道推送给Token1所属终端;或者,用于在检测单元1004检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本发明实施例中,接收单元1001还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
相对应,推送服务器还包括:
生成单元1006,用于响应接收单元1001接收到的获取终端标识请求,为终端生成终端标识Token1;
发送单元1007,用于将生成单元1006生成的终端标识Token1通过获取终端标识响应发送给终端;
相应地,接收单元1001还用于接收终端上报的用户标识、终端类型、Token1以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2;
相应地,推送服务器还包括:
记录单元1008,用于记录用户标识、终端类型、Token1以及Token2(由接收单元1001接收到)的关联关系,以及记录用户标识与用户组标识或应用标识的关联关系。
相应地,获取单元1002具体用于响应接收单元1001接收到的消息推送请求,从记录单元1008中获取用户组标识或应用标识关联的所有用户标识;
相应地,查询单元1003,具体用于查询记录单元1008是否存储有该用户标识关联的由推送服务器生的终端标识Token1。
本发明实施例中,图10所示的推送服务器还包括:
缓存单元1009,用于在检测单元1004检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存消息内容;
相应地,推送单元1005还用于当检测单元1004在指定缓存时长内检测出与Token1所属终端之间已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据时,将缓存单元1009缓存的消息内容通过直连消息通道推送给Token1所属终端;或者,还用于当检测单元1004在指定缓存时长内检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据,清除缓存单元1009缓存的消息内容。
本发明实施例中,接收单元1001还用于接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息;
相应地,推送服务器还包括:
划分发送单元1010,用于将广播消息(由接收单元1001接收到)划分成多个广播消息任务并发送给消息中心,由消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
其中,实施图10所示的推送服务器使得消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
请参阅图11,图11是本发明实施例公开的另一种推送服务器的结构示意图。如图11所示,该推送服务器1100可以包括:至少一个处理器1101,例如CPU,至少一个网络接口1104,用户接口1103,存储器1105,至少一个通信总线1102。通信总线1102用于实现这些组件之间的连接通信。其中,用户接口1103可选的可以包括标准的有线接口、无线接口。网络接口1104可选的可以包括标准的有线接口、无线接口。存储器1105可能包含高速RAM存储器,也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1105可选的可以包含至少一个位于远离前述处理器1101的存储装置。
在图11所示的推送服务器1100中,网络接口1104可以接收应用服务器发送的推送消息请求;用户接口1103可以与外部终端连接,用于推送消息给终端;而存储器1105可以用于存储程序,处理器1101可以用于调用存储器1105中存储的程序,并执行以下操作:
通过网络接口1104接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
响应该消息推送请求,查询是否存储有该用户标识关联的由推送服务器生的终端标识Token1,若存储有,检测与Token1所属终端之间是否已建立直连消息通道且在直连消息通道上收到Token1所属终端发送的心跳数据;
若检测出已建立直连消息通道且收到心跳数据,将消息内容通过直连消息通道推送给Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与Token1所属终端为同一终端。
本实施例中,处理器1101接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,还执行以下操作:
接收终端通过应用服务器发送的获取终端标识请求;
为终端生成终端标识Token1,并通过获取终端标识响应发送给终端;
接收终端发送的用户标识、终端类型、Token1以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2;
记录用户标识、终端类型、Token1以及Token2的关联关系。
其中,处理器1101可以将用户标识、终端类型、Token1以及Token2的关联关系存储至存储器1105。
在本实施例中,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,处理器1101还可以执行以下操作:
缓存消息内容;
当在指定缓存时长内检测出与Token1所属终端之间已建立直连消息通道,且在直连消息通道上收到Token1所属终端发送的心跳数据时,将消息内容通过直连消息通道推送给Token1所属终端;或者,
当在指定缓存时长内检测出与Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的消息内容。
其中,处理器1101可以缓存消息内容至存储器1105。
本实施例中,处理器1101还可以执行以下操作:
通过网络接口1104接收应用服务器发送的推送广播消息请求,该广播消息请求包括广播消息;
将广播消息划分成多个广播消息任务并发送给消息中心,由消息中心将多个广播消息任务分别发送给相应的推送服务器进行推送。
本实施例中,处理器1101也可以用于调用存储器1105中存储的程序,并执行以下操作:
通过网络接口1104接收应用服务器发送的消息推送请求,该消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
响应该消息推送请求,获取该用户组标识或应用标识关联的所有用户标识;
查询是否存储有该用户标识关联的由推送服务器生的终端标识Token1,若存储有,检测与Token1所属终端之间是否已建立直连消息通道,且在直连消息通道上收到Token1所属终端发送的心跳数据;
若检测出已建立直连消息通道且收到心跳数据,将消息内容通过直连消息通道推送给Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,通过消息推送请求将消息内容和消息推送系统生成的终端标识Token2推送给消息推送系统,以使该消息推送系统校验Token2合法后,由消息推送系统将消息内容推送至Token2所属终端;其中,该消息推送系统是该用户标识关联的终端类型所对应的消息推送系统,且Token2所属终端与所述Token1所属终端为同一终端。
本实施例中,处理器1101接收应用服务器发送的包括用户组标识和消息内容,或包括应用标识和消息内容的消息推送请求之前,还执行以下操作:
接收终端通过应用服务器发送的获取终端标识请求;
为终端生成终端标识Token1,并通过获取终端标识响应发送给终端;
接收终端发送的用户标识、终端类型、Token1以及该终端类型所对应的消息推送系统为该终端生成的终端标识Token2;
记录用户标识、终端类型、Token1以及Token2的关联关系,以及记录该用户标识与用户组标识或应用标识的关联关系。
其中,处理器1101可以将用户标识、终端类型、Token1以及Token2的关联关系,以及该用户标识与用户组标识或应用标识的关联关系存储至存储器1105。
其中,实施图11所示的推送服务器使得消息推送不再受制于各类消息推送系统的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
请参阅图12,图12是本发明实施例公开的一种消息推送系统的结构示意图。如图12所示,该消息推送系统包括:
应用服务器1201、推送服务器1202、iOS消息推送系统1203(如苹果APNS)、Android消息推送系统1204(如谷歌GCM)、Microsoft消息推送系统1205(如微软MPNS)、iOS终端1206、Android终端1207以及WindowsPhone终端1208,其中,应用服务器1201可以发送包括用户标识和消息内容的消息推送请求给推送服务器1202,或者,应用服务器1201可以发送包括用户组标识和消息内容,或包括应用标识和消息内容的消息推送请求给推送服务器1202,由推送服务器1202根据前面实施例中所描述的消息推送方法将消息推送至iOS终端1206、Android终端1207以及Windows Phone终端1208。
其中,iOS消息推送系统1203(如苹果APNS),用于向iOS终端1206推送消息。
其中,Android消息推送系统1204(如谷歌GCM),用于向Android终端1207推送消息。
其中,Microsoft消息推送系统1205(如微软MPNS),用于向WindowsPhone终端1208推送消息。
其中,实施图12所示的消息推送系统使得消息推送不再受制于各类消息推送系统(如苹果APNS)、谷歌GCM、微软MPNS)的部署形态,可以保证消息推送的可靠性、及时性。另外,消息推送也不要求应用服务器建立与各类消息推送系统的连接,从而可以简化应用服务器的接口。
本发明中,推送服务器可以提供统一的单播、组播、广播消息推送接口,可以屏蔽向各类终端推送消息接口的差异,使应用服务器聚焦业务逻辑的实现。
本发明中,推送服务器提供直连消息通道能力,通过缓存、终端上线后重推送机制,可以保证消息可靠推送;并支持专网、公网部署,解决受限于各类消息推送系统部署形态的局限性。
本发明中,推送服务器提供通过直连消息通道推送消息失败后,可以自动通过消息推送系统推送消息,保证消息推送的即时性。
本发明中,推送服务器可以通过广播任务拆分的方式,优化消息广播机制,提高广播消息推送的即时性和可靠性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-OnlyMemory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
以上对本发明实施例公开的一种消除推送方法和推送服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种消息推送方法,其特征在于,包括:
推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
所述推送服务器响应所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1,若存储有,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
2.根据权利要求1所述的消息推送方法,其特征在于,所述推送服务器接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,所述方法还包括:
推送服务器接收终端通过应用服务器发送的获取终端标识请求;
所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Token1,并通过获取终端标识响应发送给所述终端;
所述推送服务器接收所述终端发送的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系。
3.根据权利要求1或2所述的消息推送方法,其特征在于,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括:
所述推送服务器缓存所述消息内容;
当在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,
当在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
4.根据权利要求1或2所述的消息推送方法,其特征在于,所述方法还包括:
所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
5.一种消息推送方法,其特征在于,包括:
推送服务器接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
所述推送服务器响应所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;
所述推送服务器查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1,若存储有,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
若检测出已建立直连消息通道且收到心跳数据,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述推送服务器通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
6.根据权利要求5所述的消息推送方法,其特征在于,所述推送服务器接收应用服务器发送的消息推送请求之前,所述方法还包括:
推送服务器接收终端通过应用服务器上报的获取终端标识请求;
所述推送服务器响应所述获取终端标识请求为所述终端生成终端标识Token1,并通过获取终端标识响应发送给所述终端;
所述推送服务器接收所述终端上报的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
7.根据权利要求5或6所述的消息推送方法,其特征在于,若检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,所述方法还包括:
所述推送服务器缓存所述消息内容;
当在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,所述推送服务器将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;
当在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
8.根据权利要求5或6所述的消息推送方法,其特征在于,所述方法还包括:
所述推送服务器接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
9.一种推送服务器,其特征在于,包括:
接收单元,用于接收应用服务器发送的包括用户标识和消息内容的消息推送请求;
查询单元,用于响应所述接收单元接收到的所述消息推送请求,查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1;
检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
10.根据权利要求9所述的推送服务器,其特征在于,
所述接收单元,还用于在接收应用服务器发送的包括用户标识和消息内容的消息推送请求之前,接收终端通过应用服务器发送的获取终端标识请求;
所述推送服务器还包括:
生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Token1;
发送单元,用于将所述终端标识Token1通过获取终端标识响应发送给所述终端;
所述接收单元,还用于接收所述终端发送的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器还包括:
记录单元,用于记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系。
11.根据权利要求9或10所述的推送服务器,其特征在于,所述推送服务器还包括:
缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容;
所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,用于当所述检测单元在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
12.根据权利要求9或10所述的推送服务器,其特征在于,
所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器还包括:
划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
13.一种推送服务器,其特征在于,包括:
接收单元,用于接收应用服务器发送的消息推送请求,所述消息推送请求包括用户组标识和消息内容,或包括应用标识和消息内容;
获取单元,用于响应所述接收单元接收到的所述消息推送请求,获取所述用户组标识或应用标识关联的所有用户标识;
查询单元,用于查询是否存储有所述用户标识关联的由所述推送服务器生的终端标识Token1;
检测单元,用于在所述查询单元的查询结果为存储有时,检测与所述Token1所属终端之间是否已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据;
推送单元,用于在所述检测单元检测出已建立直连消息通道且收到心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,通过消息推送请求将所述消息内容和消息推送系统生成的终端标识Token2推送给所述消息推送系统,以使所述消息推送系统校验所述Token2合法后,由所述消息推送系统将所述消息内容推送至所述Token2所属终端;其中,所述消息推送系统是所述用户标识关联的终端类型所对应的消息推送系统,且所述Token2所属终端与所述Token1所属终端为同一终端。
14.根据权利要求13所述的推送服务器,其特征在于,
所述接收单元,还用于在接收应用服务器发送的消息推送请求之前,接收终端通过应用服务器上报的获取终端标识请求;
所述推送服务器还包括:
生成单元,用于响应所述获取终端标识请求,为所述终端生成终端标识Token1;
发送单元,用于将所述终端标识Token1通过获取终端标识响应发送给所述终端;
所述接收单元,还用于接收所述终端上报的用户标识、终端类型、所述Token1以及所述终端类型所对应的消息推送系统为所述终端生成的终端标识Token2;
所述推送服务器还包括:
记录单元,用于记录所述用户标识、终端类型、所述Token1以及所述Token2的关联关系,以及记录所述用户标识与用户组标识或应用标识的关联关系。
15.根据权利要求13或14所述的推送服务器,其特征在于,所述推送服务器还包括:
缓存单元,用于在所述检测单元检测出未建立直连消息通道或已建立直连消息通道但未收到心跳数据,缓存所述消息内容;
所述推送单元,还用于当所述检测单元在指定缓存时长内检测出与所述Token1所属终端之间已建立直连消息通道且在所述直连消息通道上收到所述Token1所属终端发送的心跳数据时,将所述消息内容通过所述直连消息通道推送给所述Token1所属终端;或者,还用于当所述检测单元在所述指定缓存时长内检测出与所述Token1所属终端之间未建立直连消息通道或已建立直连消息通道但未收到心跳数据时,清除缓存的所述消息内容。
16.根据权利要求13或14所述的推送服务器,其特征在于,
所述接收单元,还用于接收应用服务器发送的推送广播消息请求,所述广播消息请求包括广播消息;
所述推送服务器还包括:
划分发送单元,用于将所述广播消息划分成多个广播消息任务并发送给消息中心,由所述消息中心将所述多个广播消息任务分别发送给相应的推送服务器进行推送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310456289.3A CN103501486B (zh) | 2013-09-29 | 2013-09-29 | 一种消息推送方法及推送服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310456289.3A CN103501486B (zh) | 2013-09-29 | 2013-09-29 | 一种消息推送方法及推送服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103501486A true CN103501486A (zh) | 2014-01-08 |
CN103501486B CN103501486B (zh) | 2016-09-28 |
Family
ID=49866645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310456289.3A Active CN103501486B (zh) | 2013-09-29 | 2013-09-29 | 一种消息推送方法及推送服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103501486B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038490A (zh) * | 2014-06-09 | 2014-09-10 | 可牛网络技术(北京)有限公司 | 一种通信安全校验方法及其装置 |
CN104202429A (zh) * | 2014-09-25 | 2014-12-10 | 携程计算机技术(上海)有限公司 | 推送消息方法及系统 |
CN104301203A (zh) * | 2014-09-10 | 2015-01-21 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN104615702A (zh) * | 2015-01-30 | 2015-05-13 | 五八有限公司 | 一种信息推送方法及装置 |
CN104618517A (zh) * | 2015-03-05 | 2015-05-13 | 国家电网公司 | 一种推送消息的方法、系统及装置 |
WO2015149471A1 (zh) * | 2014-04-04 | 2015-10-08 | 中兴通讯股份有限公司 | 一种信息推送方法、系统、设备及计算机存储介质 |
CN105825409A (zh) * | 2015-01-07 | 2016-08-03 | 航天信息股份有限公司 | 一种电子发票消息推送系统及方法 |
CN105897559A (zh) * | 2016-05-20 | 2016-08-24 | 维沃移动通信有限公司 | 一种html5应用的控制方法及移动终端 |
CN107087033A (zh) * | 2017-05-17 | 2017-08-22 | 深圳市小牛在线互联网信息咨询有限公司 | 消息推送方法、装置、存储介质及计算机设备 |
CN107431664A (zh) * | 2015-01-23 | 2017-12-01 | 电子湾有限公司 | 处理大容量网络数据 |
CN107454126A (zh) * | 2016-05-31 | 2017-12-08 | 华为终端(东莞)有限公司 | 一种消息推送方法、服务器及终端 |
CN107734076A (zh) * | 2017-11-29 | 2018-02-23 | 湖北三新文化传媒有限公司 | 消息推送方法、装置及存储介质 |
CN107888641A (zh) * | 2016-09-30 | 2018-04-06 | 阿里巴巴集团控股有限公司 | 一种消息推送方法及装置 |
CN108243219A (zh) * | 2016-12-26 | 2018-07-03 | 百度在线网络技术(北京)有限公司 | 信息推送的方法和装置 |
CN108696509A (zh) * | 2018-04-11 | 2018-10-23 | 海信集团有限公司 | 一种终端的接入处理方法和装置 |
CN108712476A (zh) * | 2018-04-27 | 2018-10-26 | 华迪计算机集团有限公司 | 一种基于推送技术进行数据更新的方法及系统 |
CN109218431A (zh) * | 2018-09-28 | 2019-01-15 | 江苏中威科技软件系统有限公司 | 一种信息精准推送管理方法 |
CN110505275A (zh) * | 2019-07-16 | 2019-11-26 | 北京奇艺世纪科技有限公司 | 数据传输方法、系统、服务器及计算机可读存储介质 |
CN110838971A (zh) * | 2019-11-07 | 2020-02-25 | 北京奇艺世纪科技有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN111741060A (zh) * | 2020-05-08 | 2020-10-02 | 广州三七互娱科技有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
US10924414B2 (en) | 2015-01-23 | 2021-02-16 | Ebay Inc. | Processing high volume network data |
CN112532673A (zh) * | 2019-09-19 | 2021-03-19 | 北京京东振世信息技术有限公司 | 消息发送方法及装置、计算机可读存储介质、电子设备 |
CN112804309A (zh) * | 2020-12-31 | 2021-05-14 | 中国人寿保险股份有限公司上海数据中心 | 一种组播推送方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103037312A (zh) * | 2011-10-08 | 2013-04-10 | 阿里巴巴集团控股有限公司 | 消息推送方法及装置 |
US8442230B1 (en) * | 2010-11-23 | 2013-05-14 | Juniper Networks, Inc. | Enhanced high availability for group VPN in broadcast environment |
CN103188653A (zh) * | 2011-12-27 | 2013-07-03 | 华为终端有限公司 | 接收数据的方法、发送数据的方法、移动终端和服务器 |
-
2013
- 2013-09-29 CN CN201310456289.3A patent/CN103501486B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8442230B1 (en) * | 2010-11-23 | 2013-05-14 | Juniper Networks, Inc. | Enhanced high availability for group VPN in broadcast environment |
CN103037312A (zh) * | 2011-10-08 | 2013-04-10 | 阿里巴巴集团控股有限公司 | 消息推送方法及装置 |
CN103188653A (zh) * | 2011-12-27 | 2013-07-03 | 华为终端有限公司 | 接收数据的方法、发送数据的方法、移动终端和服务器 |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015149471A1 (zh) * | 2014-04-04 | 2015-10-08 | 中兴通讯股份有限公司 | 一种信息推送方法、系统、设备及计算机存储介质 |
CN104038490A (zh) * | 2014-06-09 | 2014-09-10 | 可牛网络技术(北京)有限公司 | 一种通信安全校验方法及其装置 |
CN104038490B (zh) * | 2014-06-09 | 2018-01-12 | 可牛网络技术(北京)有限公司 | 一种通信安全校验方法及其装置 |
CN104301203A (zh) * | 2014-09-10 | 2015-01-21 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN104301203B (zh) * | 2014-09-10 | 2016-04-27 | 腾讯科技(深圳)有限公司 | 一种消息推送方法和设备 |
CN104202429A (zh) * | 2014-09-25 | 2014-12-10 | 携程计算机技术(上海)有限公司 | 推送消息方法及系统 |
CN105825409B (zh) * | 2015-01-07 | 2021-03-02 | 航天信息股份有限公司 | 一种电子发票消息推送系统及方法 |
CN105825409A (zh) * | 2015-01-07 | 2016-08-03 | 航天信息股份有限公司 | 一种电子发票消息推送系统及方法 |
CN107431664A (zh) * | 2015-01-23 | 2017-12-01 | 电子湾有限公司 | 处理大容量网络数据 |
US11818049B2 (en) | 2015-01-23 | 2023-11-14 | Ebay Inc. | Processing high volume network data |
US10924414B2 (en) | 2015-01-23 | 2021-02-16 | Ebay Inc. | Processing high volume network data |
US11916727B2 (en) | 2015-01-23 | 2024-02-27 | Ebay Inc. | Processing high volume network data |
CN107431664B (zh) * | 2015-01-23 | 2021-03-12 | 电子湾有限公司 | 消息传递系统和方法 |
CN104615702B (zh) * | 2015-01-30 | 2020-05-15 | 五八有限公司 | 一种信息推送方法及装置 |
CN104615702A (zh) * | 2015-01-30 | 2015-05-13 | 五八有限公司 | 一种信息推送方法及装置 |
CN104618517A (zh) * | 2015-03-05 | 2015-05-13 | 国家电网公司 | 一种推送消息的方法、系统及装置 |
CN104618517B (zh) * | 2015-03-05 | 2018-08-07 | 国家电网公司 | 一种推送消息的方法、系统及装置 |
CN105897559A (zh) * | 2016-05-20 | 2016-08-24 | 维沃移动通信有限公司 | 一种html5应用的控制方法及移动终端 |
CN105897559B (zh) * | 2016-05-20 | 2019-01-29 | 维沃移动通信有限公司 | 一种html5应用的控制方法及移动终端 |
CN107454126A (zh) * | 2016-05-31 | 2017-12-08 | 华为终端(东莞)有限公司 | 一种消息推送方法、服务器及终端 |
CN107888641A (zh) * | 2016-09-30 | 2018-04-06 | 阿里巴巴集团控股有限公司 | 一种消息推送方法及装置 |
CN108243219A (zh) * | 2016-12-26 | 2018-07-03 | 百度在线网络技术(北京)有限公司 | 信息推送的方法和装置 |
CN108243219B (zh) * | 2016-12-26 | 2020-11-06 | 百度在线网络技术(北京)有限公司 | 信息推送的方法和装置 |
CN107087033A (zh) * | 2017-05-17 | 2017-08-22 | 深圳市小牛在线互联网信息咨询有限公司 | 消息推送方法、装置、存储介质及计算机设备 |
CN107087033B (zh) * | 2017-05-17 | 2020-05-26 | 深圳市小牛在线互联网信息咨询有限公司 | 消息推送方法、装置、存储介质及计算机设备 |
CN107734076A (zh) * | 2017-11-29 | 2018-02-23 | 湖北三新文化传媒有限公司 | 消息推送方法、装置及存储介质 |
CN108696509A (zh) * | 2018-04-11 | 2018-10-23 | 海信集团有限公司 | 一种终端的接入处理方法和装置 |
CN108712476A (zh) * | 2018-04-27 | 2018-10-26 | 华迪计算机集团有限公司 | 一种基于推送技术进行数据更新的方法及系统 |
CN109218431A (zh) * | 2018-09-28 | 2019-01-15 | 江苏中威科技软件系统有限公司 | 一种信息精准推送管理方法 |
CN110505275A (zh) * | 2019-07-16 | 2019-11-26 | 北京奇艺世纪科技有限公司 | 数据传输方法、系统、服务器及计算机可读存储介质 |
CN112532673A (zh) * | 2019-09-19 | 2021-03-19 | 北京京东振世信息技术有限公司 | 消息发送方法及装置、计算机可读存储介质、电子设备 |
CN112532673B (zh) * | 2019-09-19 | 2023-12-05 | 北京京东振世信息技术有限公司 | 消息发送方法及装置、计算机可读存储介质、电子设备 |
CN110838971B (zh) * | 2019-11-07 | 2022-07-22 | 北京奇艺世纪科技有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN110838971A (zh) * | 2019-11-07 | 2020-02-25 | 北京奇艺世纪科技有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN111741060B (zh) * | 2020-05-08 | 2023-12-12 | 广州三七互娱科技有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
CN111741060A (zh) * | 2020-05-08 | 2020-10-02 | 广州三七互娱科技有限公司 | 消息推送方法、装置、计算机设备和存储介质 |
CN112804309A (zh) * | 2020-12-31 | 2021-05-14 | 中国人寿保险股份有限公司上海数据中心 | 一种组播推送方法 |
CN112804309B (zh) * | 2020-12-31 | 2022-09-20 | 中国人寿保险股份有限公司上海数据中心 | 一种组播推送方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103501486B (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103501486A (zh) | 一种消息推送方法及推送服务器 | |
CN103812755A (zh) | 一种即时通讯应用中的消息同步方法及装置 | |
CN102845123B (zh) | 虚拟私云的连接方法及隧道代理服务器 | |
CN108881354B (zh) | 一种推送信息存储方法、装置、服务器和计算机存储介质 | |
CN104144098A (zh) | 消息推送方法、系统及推送服务器设备 | |
CN104144106B (zh) | 一种消息转发方法、装置及系统 | |
CN104936282A (zh) | 一种融合通信业务的注册方法及装置 | |
CN102148881A (zh) | 地址处理方法及装置 | |
CN103281192A (zh) | 数据找回方法、装置和系统 | |
CN103491162A (zh) | 基于移动互联网的信息分享方法及系统 | |
CN103973555A (zh) | 通用路由封装协议隧道建立方法、通信设备及通信系统 | |
CN103716230A (zh) | 消息发送方法、装置及服务器 | |
CN102571990A (zh) | 移动终端电子邮件同步方法及系统 | |
CN101729314A (zh) | 动态表项的回收方法、装置及动态主机分配协议侦听设备 | |
CN104507054B (zh) | 一种群组成员信息更新的方法及相关设备 | |
CN104125138A (zh) | 一种语音通讯方法及装置、系统 | |
CN102685118B (zh) | 单pdp双栈串行拨号方法和系统 | |
CN102025797A (zh) | 地址前缀处理方法、装置、系统及网络设备 | |
CN104753761A (zh) | 消息的处理方法、服务器及系统 | |
CN104123942B (zh) | 一种语音识别方法及系统 | |
CN102932214B (zh) | 一种家庭网络异构媒体设备的发现聚合方法 | |
CN115297447B (zh) | 一种长短信合并方法、系统、设备及存储介质 | |
CN101309154B (zh) | 报文的发送方法、发送装置和传输系统 | |
CN103297328B (zh) | 一种信息沟通方法和装置 | |
CN105391702A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200207 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 210012 HUAWEI Nanjing base, 101 software Avenue, Yuhuatai District, Jiangsu, Nanjing Patentee before: Huawei Technologies Co.,Ltd. |