CN104980289B - 消息推送方法、装置和系统 - Google Patents
消息推送方法、装置和系统 Download PDFInfo
- Publication number
- CN104980289B CN104980289B CN201410148495.2A CN201410148495A CN104980289B CN 104980289 B CN104980289 B CN 104980289B CN 201410148495 A CN201410148495 A CN 201410148495A CN 104980289 B CN104980289 B CN 104980289B
- Authority
- CN
- China
- Prior art keywords
- connection request
- client
- push
- connection
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本申请提出一种消息推送方法、装置和系统,其中,该消息推送方法包括:接收客户端的第一连接请求;根据第一连接请求建立并维持与客户端的连接;接收应用服务器反馈的推送消息;以及将推送消息转发至对应的客户端。本申请的消息推送方法,节省了消息推送时间,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
Description
技术领域
本申请涉及互联网技术领域,特别涉及一种消息推送方法、装置和系统。
背景技术
虽然服务器推送技术很早就已经出现,但是由于之前的浏览器技术水平难以有效支持服务器推送技术,因此服务器推送技术并未广泛应用。随着AJAX技术(AsynchronousJava script and XML,一种创建交互式网页应用的网页开发技术)的发展和普及,浏览器可通过异步传输数据的方式实现网页的局部更新,解决了IE的加载显示问题。这为服务器推送技术提供了很好的技术支持,因此服务器推送技术已逐步应用在各个领域。例如,股票交易行情分析、聊天室和网页版在线游戏等均可通过服务器推送技术来实现。
通过AJAX技术实现服务器推送时,服务器端会阻塞请求直到有数据传递或超时才返回至客户端,并断开连接;客户端的JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接;当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达,这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回。但是,由于重新建立连接需要耗费一定的时间,因此在不断的消息推送过程中会因不断的断开-重新建立连接浪费大量时间。此外,由于受到服务器端单机HTTP请求的处理能力的限制,当HTTP请求量较大时,例如超过10万级别以上时,难以通过单台服务器完成请求的处理,需要通过大批量部署分布式及其集群服务器的方式处理,部署成本高,且易造成资源浪费。
发明内容
本申请旨在至少在一定程度上解决上述技术问题。
为此,本申请的第一个目的在于提出一种消息推送方法,该方法节省了消息推送时间,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
本申请的第二个目的在于提出一种消息推送装置。
本申请的第三个目的在于提出一种消息推送系统。
为达上述目的,根据本申请第一方面实施例提出了一种消息推送方法,包括:接收客户端的第一连接请求;根据所述第一连接请求建立并维持与所述客户端的连接;接收应用服务器反馈的推送消息;以及将所述推送消息转发至对应的客户端。
本申请实施例的消息推送方法,通过代理服务器接收到客户端的连接请求后,并与客户端建立并维持连接,并将应用服务器反馈的推送消息及时的转发至客户端,无需在客户端处理推送消息时断开连接,大大节省了消息推送时间。此外,客户端并不直接与应用服务器相连,而是与具有丰富的功能集和示例配置文件、性能稳定且系统资源消耗低的代理服务器间接与应用服务器相连,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
本申请第二方面实施例提供了一种消息推送装置,包括:第一接收模块,用于接收客户端的第一连接请求;连接模块,用于根据所述第一连接请求建立并维持与所述客户端的连接;第二接收模块,用于接收应用服务器反馈的推送消息;以及第一发送模块,用于将所述推送消息转发至对应的客户端。
本申请实施例的消息推送装置,通过代理服务器接收到客户端的连接请求后,并与客户端建立并维持连接,并将应用服务器反馈的推送消息及时的转发至客户端,无需在客户端处理推送消息时断开连接,大大节省了消息推送时间。此外,客户端并不直接与应用服务器相连,而是与具有丰富的功能集和示例配置文件、性能稳定且系统资源消耗低的代理服务器间接与应用服务器相连,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
本申请第三方面实施例提供了一种消息推送系统,包括:至少一个客户端,用于分别发送第一连接请求;代理服务器,用于接收所述第一连接请求,并根据所述第一连接请求建立并维持与所述客户端的连接,以及接收推送消息,并将所述推送消息转发至对应的客户端;以及应用服务器,用于向所述代理服务器发送所述推送消息。
本申请实施例的消息推送系统,通过代理服务器接收到客户端的连接请求后,并与客户端建立并维持连接,并将应用服务器反馈的推送消息及时的转发至客户端,无需在客户端处理推送消息时断开连接,大大节省了消息推送时间。此外,客户端并不直接与应用服务器相连,而是与具有丰富的功能集和示例配置文件、性能稳定且系统资源消耗低的代理服务器间接与应用服务器相连,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本申请一个实施例的消息推送方法的流程图;
图2为根据本申请另一个实施例的消息推送方法的流程图;
图3为根据本申请一个实施例的消息推送装置的结构示意图;
图4为根据本申请另一个实施例的消息推送装置的结构示意图;
图5为根据本申请一个具体实施例的消息推送装置的结构示意图;
图6为根据本申请一个实施例的消息推送系统的结构示意图;
图7为根据本申请一个实施例的消息推送系统的流程图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
下面参考附图描述根据本申请实施例的消息推送方法、装置和系统。
为了解决在传统服务器推送技术中需要集群服务器来处理大批量HTTP请求的问题,本申请提出了一种消息推送方法。
图1为根据本申请一个实施例的消息推送方法的流程图。如图1所示,根据本申请实施例的消息推送方法,可由代理服务器执行,该方法包括:
S101,代理服务器接收客户端的第一连接请求。
在本申请的实施例中,客户端可为浏览器等web网页应用程序,第一连接请求可为HTTP请求。第一连接请求中包括发送该第一连接请求的客户端的客户端标识信息。具体地,当用户终端需要接收应用服务器的推送消息时,首先需要通过用户终端中的客户端向代理服务器发送第一连接请求,以请求与代理服务器建立连接。其中,客户端标识信息为客户端ID等能够唯一标识客户端的信息;用户终端可为手机、笔记本电脑、平板电脑等移动终端,也可为台式电脑等电子设备等。
在本申请的一个实施例中,代理服务器可为NGINX(engine x)服务器,是一种高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。NGINX是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,其将源代码以类BSD(BerkeleySoftware Distribution,伯克利软件套件)许可证的形式发布,稳定性好、具有丰富的功能集、示例配置文件,并且系统资源消耗低。在本申请的其他实施例中,也可为其他具有相同或相似功能的代理服务器,本申请对此不做限定。
S102,代理服务器根据第一连接请求建立并维持与客户端的连接。
在本申请的实施例中,代理服务器在接收到第一连接请求之后,可根据第一连接请求与相应的客户端建立连接,并维持与相应的客户端的连接。
在本申请的一个实施例中,代理服务器在与相应的客户端建立连接之后,可将第一连接请求发送至推送网关,以使推送网关对第一连接请求进行解析以获取第一连接请求对应的客户端标识信息以及第一连接请求对应的路由信息。进而推送网关可建立并存储该客户端标识信息与该路由信息的对应关系,或者根据该客户端标识信息以及相应的路由信息对已经存储的对应关系进行更新。其中,路由信息为发送第一连接请求对应的IP地址、网络地址、网络掩码等能够唯一表明第一连接请求的连接地址的信息。
S103,代理服务器接收应用服务器反馈的推送消息。
在本申请的实施例中,应用服务器为产生推送消息的服务器。代理服务器通过推送网关接收应用服务器反馈的推送消息。具体地,当应用服务器产生推送消息时,可将该推送消息发送至推送网关。其中,推送消息中包括该推送消息的目标客户端的客户端标识信息,进而推送网关可根据该推送消息中的客户端的标识信息查询已经存储的客户端标识信息与路由信息的对应关系,以获取与目标客户端的客户端标识信息相应的路由信息,并根据获取到的路由信息将该推送消息发送至代理服务器。
S104,代理服务器将推送消息转发至对应的客户端。
在本申请的实施例中,代理服务器可根据推送消息中的客户端标识信息将推送消息发送至对应的客户端。客户端接收到代理服务器发送的推送消息后,可对web网页相应的位置进行局部更新,以显示该推送消息。
应当理解,在上述方法的执行过程中,代理服务器与客户端建立连接之后,可一直维持该连接。
本申请实施例的消息推送方法,通过代理服务器接收到客户端的连接请求后,并与客户端建立并维持连接,并将应用服务器反馈的推送消息及时的转发至客户端,无需在客户端处理推送消息时断开连接,大大节省了消息推送时间。此外,客户端并不直接与应用服务器相连,而是与具有丰富的功能集和示例配置文件、性能稳定且系统资源消耗低的代理服务器间接与应用服务器相连,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
为了进一步减小应用服务器的请求数据量,可通过代理服务器将来自多个客户端的多个第一连接请求拼接为第二连接请求发送至推送网关。图2为根据本申请另一个实施例的消息推送方法的流程图。如图2所示,
S201,代理服务器接收多个客户端的多个第一连接请求。
在本申请的实施例中,代理服务器可分别接收来自多个客户端发送的多个第一连接请求。
S202,代理服务器分别根据多个第一连接请求建立并维持与多个客户端的连接。
S203,代理服务器将来自多个客户端的多个第一连接请求拼接成第二连接请求。
具体地,代理服务器在接收来自多个客户端的多个第一连接请求时,需要获取接收到的多个第一连接请求的个数,并判断接收到的多个第一连接请求的个数是否达到预设阈值(例如100个),如果达到,则可将接收到的多个第一连接请求拼接为第二连接请求。或者,获取当前时间与上一次拼接第二连接请求的时间的时间隔,并判断该时间将是否大于预设时间阈值(例如50毫秒),如果大于,则即使接收到的第一连接请求的个数未达到预设阈值,也将在上一次拼接第二连接请求的时间到当前时间内接收到的多个第一连接请求拼接为本申请第二连接请求。其中,预设阈值与预设时间阈值可根据代理服务器的请求处理能力以及实际使用情况进行设定,本申请对二者的取值不做具体限定。
S204,代理服务器将第二连接请求发送至推送网关。
在本申请的实施例中,代理服务器在将第二连接请求发送至推送网关之后,推送网关对第二连接请求进行解析以获取多个第一连接请求对应的多个客户端标识信息以及多个第一连接请求对应的多个路由信息。进而推送网关可建立并存储多个客户端标识信息与多个路由信息的对应关系,或者根据多个客户端标识信息以及相应的多个路由信息对已经存储的对应关系进行更新。
S205,代理服务器接收推送网关反馈的推送信息。
在本申请的实施例中,如果应用服务器产生推送消息,会将该推送消息发送至推送网关,其中该推送消息中包括其对应的客户端标识信息,即推送消息的目标客户端的客户端标识信息。进而推送网关可根据目标客户端的客户端标识信息以及多个客户端标识信息和多个路由信息的对应关系获取各个推送消息对应的路由信息,并根据获取到的路由信息将推送消息分别发送至代理服务器相应的端口。
S206,代理服务器将推送消息转发至对应的客户端。
在本申请的实施例中,代理服务器可根据推送消息中的客户端标识信息将推送消息发送至对应的客户端。客户端接收到代理服务器发送的推送消息后,可对web网页相应的位置进行局部更新,以显示该推送消息。
本申请实施例的消息推送方法,通过代理服务器将来自多个客户端的第一连接请求拼接为一个第二连接请求,并通过推送网关发送至应用服务器,大大减小了应用服务器处理连接请求的数据量,突破了传统方法单机处理请求的瓶颈问题,减小了应用服务器的压力,进一步降低了集群服务器的数量,节约成本和资源。
为了实现上述实施例,本申请还提出一种消息推送装置。
图3为根据本申请一个实施例的消息推送装置的结构示意图。
如图3所示,根据本申请实施例的消息推送装置,包括:第一接收模块110、连接模块120、第二接收模块130以及第一发送模块140。
具体地,第一接收模块110用于接收客户端的第一连接请求。
在本申请的实施例中,客户端可为浏览器等web网页应用程序,第一连接请求可为HTTP请求。第一连接请求中包括发送该第一连接请求的客户端的客户端标识信息。具体地,当用户终端需要接收应用服务器的推送消息时,首先需要通过用户终端中的客户端向代理服务器发送第一连接请求,以请求与代理服务器建立连接。其中,客户端标识信息为客户端ID等能够唯一标识客户端的信息;用户终端可为手机、笔记本电脑、平板电脑等移动终端,也可为台式电脑等电子设备等。
连接模块120用于根据本申请第一连接请求建立并维持与本申请客户端的连接。在本申请的实施例中,第一接收模块110在接收到第一连接请求之后,可根据第一连接请求与相应的客户端建立连接,并维持与相应的客户端的连接。
在本申请的一个实施例中,第一接收模块110在与相应的客户端建立连接之后,可将第一连接请求发送至推送网关,以使推送网关对第一连接请求进行解析以获取第一连接请求对应的客户端标识信息以及第一连接请求对应的路由信息。进而推送网关可建立并存储该客户端标识信息与该路由信息的对应关系,或者根据该客户端标识信息以及相应的路由信息对已经存储的对应关系进行更新。其中,路由信息为发送第一连接请求对应的IP地址、网络地址、网络掩码等能够唯一表明第一连接请求的连接地址的信息。
第二接收模块130用于接收应用服务器反馈的推送消息。在本申请的实施例中,应用服务器为产生推送消息的服务器。第二接收模块130通过推送网关接收应用服务器反馈的推送消息。具体地,当应用服务器产生推送消息时,可将该推送消息发送至推送网关。其中,推送消息中包括该推送消息的目标客户端的客户端标识信息,进而推送网关可根据该推送消息中的客户端的标识信息查询已经存储的客户端标识信息与路由信息的对应关系,以获取与目标客户端的客户端标识信息相应的路由信息,并根据获取到的路由信息将该推送消息发送至第二接收模块130。
第一发送模块140用于将本申请推送消息转发至对应的客户端。在本申请的实施例中,第一发送模块140可根据推送消息中的客户端标识信息将推送消息发送至对应的客户端。客户端接收到第一发送模块140发送的推送消息后,可对web网页相应的位置进行局部更新,以显示该推送消息。
本申请实施例的消息推送装置,通过代理服务器接收到客户端的连接请求后,并与客户端建立并维持连接,并将应用服务器反馈的推送消息及时的转发至客户端,无需在客户端处理推送消息时断开连接,大大节省了消息推送时间。此外,客户端并不直接与应用服务器相连,而是与具有丰富的功能集和示例配置文件、性能稳定且系统资源消耗低的代理服务器间接与应用服务器相连,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
在本申请的一个实施例中,消息推送装置可为NGINX(engine x)服务器,是一种高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。NGINX是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,其将源代码以类BSD(BerkeleySoftware Distribution,伯克利软件套件)许可证的形式发布,稳定性好、具有丰富的功能集、示例配置文件,并且系统资源消耗低。在本申请的其他实施例中,也可为其他具有相同或相似功能的代理服务器,本申请对此不做限定。
图4为根据本申请另一个实施例的消息推送装置的结构示意图。
如图4所示,根据本申请实施例的消息推送装置,包括:第一接收模块110、连接模块120、第二接收模块130、第一发送模块140、拼接模块150和第二发送模块160。
具体地,拼接模块150用于将来自多个客户端的多个第一连接请求拼接成第二连接请求。拼接模块150在接收来自多个客户端的多个第一连接请求时,需要通过获取接收到的多个第一连接请求的个数,并判断接收到的多个第一连接请求的个数是否达到预设阈值(例如100个),如果达到,则可将接收到的多个第一连接请求拼接为第二连接请求。或者,获取当前时间与上一次拼接第二连接请求的时间的时间隔,并判断该时间将是否大于预设时间阈值(例如50毫秒),如果大于,则即使接收到的第一连接请求的个数未达到预设阈值,也将在上一次拼接第二连接请求的时间到当前时间内接收到的多个第一连接请求拼接为本申请第二连接请求。其中,预设阈值与预设时间阈值可根据代理服务器的请求处理能力以及实际使用情况进行设定,本申请对二者的取值不做具体限定。
更具体地,如图5所示,为根据本申请一个具体实施例的消息推送装置的结构示意图。拼接模块150可进一步包括第一获取单元151、第一判断单元152、第一拼接单元153、第二获取单元154、第二判断单元155和第二拼接单元156。
其中,第一获取单元151用于获取本申请多个第一连接请求的个数。
第一判断单元152用于判断本申请多个第一连接请求的个数是否达到预设阈值。
第一拼接单元153用于在本申请多个第一连接请求的个数达到本申请预设阈值时,将本申请多个第一连接请求拼接为本申请第二连接请求。
第二获取单元154用于获取当前时间与上一次拼接第二连接请求的时间的时间隔。
第二判断单元155用于判断本申请时间间隔是否大于预设时间阈值。
第二拼接单元156用于在本申请时间间隔大于本申请预设时间阈值时,将在上一次拼接第二连接请求的时间到本申请当前时间内接收到的多个第一连接请求拼接为本申请第二连接请求。
在本申请的一个实施例中,第二获取单元154、第二判断单元155和第二拼接单元156是可选的。
第二发送模块160用于将本申请第二连接请求发送至本申请推送网关。在本申请的实施例中,第二发送模块160在将第二连接请求发送至推送网关之后,推送网关对第二连接请求进行解析以获取多个第一连接请求对应的多个客户端标识信息以及多个第一连接请求对应的多个路由信息。进而推送网关可建立并存储多个客户端标识信息与多个路由信息的对应关系,或者根据多个客户端标识信息以及相应的多个路由信息对已经存储的对应关系进行更新。
本申请的消息推送装置,通过代理服务器将来自多个客户端的第一连接请求拼接为一个第二连接请求,并通过推送网关发送至应用服务器,大大减小了应用服务器处理连接请求的数据量,突破了传统方法单机处理请求的瓶颈问题,减小了应用服务器的压力,进一步降低了集群服务器的数量,节约成本和资源。
为了实现上述实施例,本申请还提出一种消息推送系统。
图6为根据本申请一个实施例的消息推送系统的结构示意图。图7为根据本申请一个实施例的消息推送系统的流程图。
如图6和图7所示,该消息推送系统包括:代理服务器100、至少一个客户端200、应用服务器300、推送网关400。
具体地,至少一个客户端200用于分别向代理服务器100发送第一连接请求。其中,第一连接请求中包括发送该第一连接请求的客户端的客户端标识信息。具体地,当用户终端需要接收应用服务器的推送消息时,首先需要通过用户终端中的客户端200向代理服务器100发送第一连接请求,以请求与代理服务器建立连接。
代理服务器100用于接收至少一个客户端200发送的至少一个第一连接请求,并根据本申请第一连接请求建立并维持与本申请客户端200的连接,以及接收推送消息,并将本申请推送消息转发至对应的客户端200。
在本申请的一个实施例中,代理服务器100可为NGINX(engine x)服务器,是一种高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。NGINX是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,其将源代码以类BSD(BerkeleySoftware Distribution,伯克利软件套件)许可证的形式发布,稳定性好、具有丰富的功能集、示例配置文件,并且系统资源消耗低。在本申请的其他实施例中,也可为其他具有相同或相似功能的代理服务器,本申请对此不做限定。
应用服务器300用于向本申请代理服务器100发送本申请推送消息。
在本申请的实施例中,代理服务器100可通过推送网关400与本申请应用服务器建立连接以接收本申请应用服务器反馈的推送消息。
在本申请的一个实施例中,代理服务器100在与相应的客户端200建立连接之后,可将第一连接请求发送至推送网关400,以使推送网关400对第一连接请求进行解析以获取第一连接请求对应的客户端标识信息以及第一连接请求对应的路由信息。进而推送网关400可建立并存储该客户端标识信息与该路由信息的对应关系,或者根据该客户端标识信息以及相应的路由信息对已经存储的对应关系进行更新。
当应用服务器300产生推送消息时,可将该推送消息发送至推送网关400。其中,推送消息中包括该推送消息的目标客户端的客户端标识信息,进而推送网关400可根据该推送消息中的客户端的标识信息查询已经存储的客户端标识信息与路由信息的对应关系,以获取与目标客户端的客户端标识信息相应的路由信息,并根据获取到的路由信息将该推送消息发送至代理服务器100。
在本申请的实施例中,代理服务器100可根据推送消息中的客户端标识信息将推送消息发送至对应的客户端200。客户端200接收到代理服务器100发送的推送消息后,可对web网页相应的位置进行局部更新,以显示该推送消息。
在本申请的一个实施例中,代理服务器100在接收来自多个客户端的多个第一连接请求时,需要获取接收到的多个第一连接请求的个数,并判断接收到的多个第一连接请求的个数是否达到预设阈值(例如100个),如果达到,则可将接收到的多个第一连接请求拼接为第二连接请求。或者,获取当前时间与上一次拼接第二连接请求的时间的时间隔,并判断该时间将是否大于预设时间阈值(例如50毫秒),如果大于,则即使接收到的第一连接请求的个数未达到预设阈值,也将在上一次拼接第二连接请求的时间到当前时间内接收到的多个第一连接请求拼接为本申请第二连接请求。其中,预设阈值与预设时间阈值可根据代理服务器的请求处理能力以及实际使用情况进行设定,本申请对二者的取值不做具体限定。
推送网关400在接收到第二连接请求之后,可对第二连接请求进行解析以获取多个第一连接请求对应的多个客户端标识信息以及多个第一连接请求对应的多个路由信息。进而推送网关可建立并存储多个客户端标识信息与多个路由信息的对应关系,或者根据多个客户端标识信息以及相应的多个路由信息对已经存储的对应关系进行更新。
本申请的消息推送系统,通过代理服务器接收到客户端的连接请求后,并与客户端建立并维持连接,并将应用服务器反馈的推送消息及时的转发至客户端,无需在客户端处理推送消息时断开连接,大大节省了消息推送时间。此外,客户端并不直接与应用服务器相连,而是与具有丰富的功能集和示例配置文件、性能稳定且系统资源消耗低的代理服务器间接与应用服务器相连,减少了应用服务器的请求处理数量,减小了应用服务器的压力,从而有效降低了集群服务器的数量,节约成本和资源。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本申请的实施例,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同限定。
Claims (9)
1.一种消息推送方法,其特征在于,包括:
接收客户端的第一连接请求;
根据所述第一连接请求建立并维持与所述客户端的连接;
接收应用服务器反馈的推送消息;
利用所维持的连接将所述推送消息转发至对应的客户端;
其中,通过推送网关与所述应用服务器建立连接以接收所述应用服务器反馈的推送消息;
在所述接收客户端的第一连接请求之后,还包括:
将来自多个客户端的多个第一连接请求拼接成第二连接请求;
将所述第二连接请求发送至所述推送网关;
所述将来自多个客户端的多个第一连接请求拼接成第二连接请求,包括:
获取所述多个第一连接请求的个数;
判断所述多个第一连接请求的个数是否达到预设阈值;
如果所述多个第一连接请求的个数达到所述预设阈值,则将所述多个第一连接请求拼接为所述第二连接请求。
2.如权利要求1所述的方法,其特征在于,所述将来自多个客户端的多个第一连接请求拼接成第二连接请求,包括:
获取当前时间与上一次拼接第二连接请求的时间的时间隔;
判断所述时间间隔是否大于预设时间阈值;
如果所述时间间隔大于所述预设时间阈值,则将在上一次拼接第二连接请求的时间到所述当前时间内接收到的多个第一连接请求拼接为所述第二连接请求。
3.如权利要求1-2任一项所述的方法,其特征在于,所述方法由NGINX服务器执行。
4.如权利要求1所述的方法,其特征在于,在所述将所述第二连接请求发送至所述推送网关之后,还包括:
所述推送网关对所述第二连接请求进行解析以获取所述多个第一连接请求对应的多个客户端标识信息以及所述多个第一连接请求对应的多个路由信息;
所述推送网关建立并存储所述多个客户端标识信息与所述多个路由信息的对应关系。
5.如权利要求1所述的方法,其特征在于,所述通过推送网关与所述应用服务器建立连接以接收所述应用服务器反馈的推送消息,包括:
所述推送网关接收所述应用服务器发送的推送消息,其中,所述推送消息包括所述推送消息对应的客户端标识信息;
所述推送网关根据多个客户端标识信息和多个路由信息的对应关系和所述推送消息对应的客户端标识信息获取相应的路由信息;
所述推送网关根据获取到的路由信息反馈所述推送消息。
6.一种消息推送装置,其特征在于,包括:
第一接收模块,用于接收客户端的第一连接请求;
连接模块,用于根据所述第一连接请求建立并维持与所述客户端的连接;
第二接收模块,用于接收应用服务器反馈的推送消息;
第一发送模块,用于利用所维持的连接将所述推送消息转发至对应的客户端;
其中,所述第二接收模块通过推送网关与所述应用服务器建立连接以接收所述应用服务器反馈的推送消息;
拼接模块,用于将来自多个客户端的多个第一连接请求拼接成第二连接请求;
第二发送模块,用于将所述第二连接请求发送至所述推送网关;
所述拼接模块具体包括:
第一获取单元,用于获取所述多个第一连接请求的个数;
第一判断单元,用于判断所述多个第一连接请求的个数是否达到预设阈值;
第一拼接单元,用于在所述多个第一连接请求的个数达到所述预设阈值时,将所述多个第一连接请求拼接为所述第二连接请求。
7.如权利要求6所述的装置,其特征在于,所述拼接模块具体包括:
第二获取单元,用于获取当前时间与上一次拼接第二连接请求的时间的时间隔;
第二判断单元,用于判断所述时间间隔是否大于预设时间阈值;
第二拼接单元,用于在所述时间间隔大于所述预设时间阈值时,将在上一次拼接第二连接请求的时间到所述当前时间内接收到的多个第一连接请求拼接为所述第二连接请求。
8.如权利要求6-7任一项所述的装置,其特征在于,所述消息推送装置为NGINX服务器。
9.一种消息推送系统,其特征在于,包括:
至少一个客户端,用于分别发送第一连接请求;
代理服务器,用于接收所述第一连接请求,并根据所述第一连接请求建立并维持与所述客户端的连接,以及接收推送消息,并利用所维持的连接将所述推送消息转发至对应的客户端;以及
应用服务器,用于向所述代理服务器发送所述推送消息;
其中,所述代理服务器通过推送网关与所述应用服务器建立连接以接收所述应用服务器反馈的推送消息;
在所述接收客户端的第一连接请求之后,所述代理服务器还用于:
将来自多个客户端的多个第一连接请求拼接成第二连接请求;
将所述第二连接请求发送至所述推送网关;
所述将来自多个客户端的多个第一连接请求拼接成第二连接请求,包括:
获取所述多个第一连接请求的个数;
判断所述多个第一连接请求的个数是否达到预设阈值;
如果所述多个第一连接请求的个数达到所述预设阈值,则将所述多个第一连接请求拼接为所述第二连接请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410148495.2A CN104980289B (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
CN201910087274.1A CN109922138A (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410148495.2A CN104980289B (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910087274.1A Division CN109922138A (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104980289A CN104980289A (zh) | 2015-10-14 |
CN104980289B true CN104980289B (zh) | 2019-03-19 |
Family
ID=54276422
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410148495.2A Active CN104980289B (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
CN201910087274.1A Pending CN109922138A (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910087274.1A Pending CN109922138A (zh) | 2014-04-14 | 2014-04-14 | 消息推送方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN104980289B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105554142B (zh) * | 2015-12-24 | 2019-02-01 | 北京奇虎科技有限公司 | 消息推送的方法、装置及系统 |
CN105978789B (zh) * | 2016-04-28 | 2020-07-10 | 安徽波士信息科技有限公司 | 一种消息推送系统及方法 |
CN106230896B (zh) * | 2016-07-18 | 2019-09-03 | 深圳国泰安教育技术有限公司 | 一种消息推送方法、装置及系统 |
CN107872538B (zh) * | 2017-12-07 | 2021-02-02 | 浙江大华技术股份有限公司 | 解耦tcp长连接的业务处理方法、反向代理和业务服务器 |
CN108040116B (zh) * | 2017-12-22 | 2022-05-20 | 努比亚技术有限公司 | 消息推送方法、路由器及计算机可读存储介质 |
CN108234631B (zh) * | 2017-12-29 | 2021-06-15 | 北京奇虎科技有限公司 | 消息推送平台和消息推送方法 |
CN108377247B (zh) * | 2018-03-08 | 2021-02-26 | 北京车和家信息技术有限公司 | 一种消息推送方法和装置 |
CN108900575B (zh) * | 2018-06-06 | 2021-07-20 | 深圳蓝贝科技有限公司 | 基于移动终端的长连接分级通信方法和系统 |
CN110611691B (zh) * | 2018-06-15 | 2022-11-15 | 中兴通讯股份有限公司 | 一种消息推送方法、系统及存储介质 |
CN108616606B (zh) * | 2018-08-01 | 2021-10-26 | 湖南恒茂高科股份有限公司 | 一种物联网通信方法及装置 |
CN110633442A (zh) * | 2019-08-19 | 2019-12-31 | 阿里巴巴集团控股有限公司 | 一种推送方法、装置及电子设备 |
CN111064771B (zh) * | 2019-11-14 | 2022-07-05 | 福建天晴数码有限公司 | 一种网络请求处理方法及系统 |
CN111555963B (zh) * | 2020-04-30 | 2022-08-16 | 北京思特奇信息技术股份有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN111866095A (zh) * | 2020-07-01 | 2020-10-30 | 合肥森亿智能科技有限公司 | 基于私有云的统一推送平台、方法以及终端 |
CN112235399B (zh) * | 2020-10-14 | 2024-01-02 | 腾讯科技(深圳)有限公司 | 内容推送方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291808A (zh) * | 2011-06-03 | 2011-12-21 | 莫雅静 | 一种网络通信方法、通信设备以及通信设备的中间件 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN102761864A (zh) * | 2011-04-29 | 2012-10-31 | 中国移动通信集团公司 | 一种数据传输的方法、系统及设备 |
CN103001860A (zh) * | 2012-12-20 | 2013-03-27 | 北京思特奇信息技术股份有限公司 | 一种融合通信Web即时消息实现系统 |
CN103580988A (zh) * | 2012-07-31 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 消息接收、推送、传输的方法、装置、服务器组及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8320362B2 (en) * | 2006-05-16 | 2012-11-27 | Siemens Enterprise Communications, Inc. | Telecommunications system and method of initiating file transfers from voice endpoints |
CN101969469B (zh) * | 2010-10-25 | 2013-11-06 | 华为技术有限公司 | 电信能力开放中的回调处理方法及装置 |
CN102427480B (zh) * | 2011-12-31 | 2015-01-14 | 北京新媒传信科技有限公司 | 一种多应用服务平台系统中的应用访问方法 |
CN103685396B (zh) * | 2012-09-14 | 2017-04-19 | 北京神州泰岳软件股份有限公司 | 一种实现消息推送的方法和系统 |
CN103297934B (zh) * | 2013-03-04 | 2017-05-31 | 东莞宇龙通信科技有限公司 | 信息推送方法、系统和移动终端 |
CN103412870A (zh) * | 2013-07-09 | 2013-11-27 | 北京深思洛克软件技术股份有限公司 | 一种移动终端设备新闻客户端软件的新闻推送方法 |
-
2014
- 2014-04-14 CN CN201410148495.2A patent/CN104980289B/zh active Active
- 2014-04-14 CN CN201910087274.1A patent/CN109922138A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761864A (zh) * | 2011-04-29 | 2012-10-31 | 中国移动通信集团公司 | 一种数据传输的方法、系统及设备 |
CN102291808A (zh) * | 2011-06-03 | 2011-12-21 | 莫雅静 | 一种网络通信方法、通信设备以及通信设备的中间件 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN103580988A (zh) * | 2012-07-31 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 消息接收、推送、传输的方法、装置、服务器组及系统 |
CN103001860A (zh) * | 2012-12-20 | 2013-03-27 | 北京思特奇信息技术股份有限公司 | 一种融合通信Web即时消息实现系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104980289A (zh) | 2015-10-14 |
CN109922138A (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104980289B (zh) | 消息推送方法、装置和系统 | |
CN108319468B (zh) | 灰度发布方法、装置、系统及电子设备 | |
CN101216834B (zh) | 一种文件下载方法、系统、装置与服务器 | |
CN108667861A (zh) | 通过浏览器对设备实时监控的方法、系统以及服务器 | |
CN107645561A (zh) | 一种云手机的图片预览方法 | |
CN102752388A (zh) | 基于浏览器的交互系统、方法、浏览器和云端服务器 | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
US9258377B2 (en) | Publish information on website | |
CN103338243A (zh) | Web节点的缓存数据更新方法和系统 | |
CN104253741A (zh) | 一种信息发送方法、相关装置及系统 | |
CN100536472C (zh) | 一种网络资源访问控制的方法、模块和服务器 | |
CN105978976A (zh) | 信息处理系统及方法 | |
CN100563197C (zh) | 一种图片共享系统和方法 | |
CN102710799B (zh) | 基于实时消息传递的客户端插件安装提醒系统和方法 | |
CN108055199A (zh) | 支持离线消息保存的移动推送方法及系统 | |
CN103532824B (zh) | 即时通讯消息通知的方法、浏览器及服务器 | |
CN103516579A (zh) | 提供离线消息的服务系统及相应的服务方法 | |
CN104142975A (zh) | 一种基于微博消息的推广方法、装置及系统 | |
KR20140093491A (ko) | 단축 url의 관리 방법, 관리 장치 및 그 관리를 수행하는 컴퓨터 프로그램을 저장한 저장 매체 | |
CN102594859B (zh) | 一种业务数据的呈现方法、终端、服务器及系统 | |
CN105635291A (zh) | 信息推送方法及装置、信息显示方法及装置 | |
CN103078782A (zh) | 一种好友备注的推荐备注实现方法及系统 | |
CN107634854B (zh) | 业务数据的处理方法及装置 | |
CN105227661B (zh) | 文件分享方法及系统、服务器 | |
CN113055348A (zh) | 一种跨平台数据请求方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191209 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, Cayman Islands Patentee after: Innovative advanced technology Co., Ltd Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: Alibaba Group Holding Co., Ltd. |