CN110611691A - 一种消息推送方法、***及存储介质 - Google Patents
一种消息推送方法、***及存储介质 Download PDFInfo
- Publication number
- CN110611691A CN110611691A CN201810623695.7A CN201810623695A CN110611691A CN 110611691 A CN110611691 A CN 110611691A CN 201810623695 A CN201810623695 A CN 201810623695A CN 110611691 A CN110611691 A CN 110611691A
- Authority
- CN
- China
- Prior art keywords
- message
- server
- message channel
- pushed
- client
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种消息推送方法,应用于中间件,该方法包括:接收第一服务器发送的待推送消息,第一服务器为未被客户端注册的服务器,待推送消息携带第一消息通道信息;根据预设的注册消息通道与服务器的对应关系,以及第一消息通道信息,确定出与将第一消息通道信息表征的推送消息通道对应的第二服务器;将待推送消息转发至第二服务器,第二服务器为被客户端注册了推送消息通道的服务器。
Description
技术领域
本发明涉及计算机网络领域中的推送技术,尤其涉及一种消息推送方法、***及存储介质。
背景技术
随着互联网、电信行业的迅速发展,网络规模不断扩大,设备种类不断增加,其所提供的业务能力也更加多样化,比如,服务器消息推送技术的广泛应用。服务器消息推送技术改变了传统模式中仅能以客户端发出请求、服务器端响应的工作方式,使得服务器端能够主动向客户端推送资源监控信息、即时消息等。
现有技术中,服务器在向客户端进行消息推送时,客户端仅能收到其注册的服务器的推送消息,如此,随着客户端数量的增多,对服务器的性能也具有较高的要求。
发明内容
为解决上述技术问题,本发明实施例期望提供一种消息推送方法、***及存储介质,能够将客户端订阅的推送消息扩展到不同的推送服务器上进行消息推送,减少服务器的推送压力,降低对服务器的性能要求,使得服务器达到负载均衡。
本发明的技术方案是这样实现的:
本发明实施例提供了一种消息推送方法,应用于中间设备,所述方法包括:
接收第一服务器发送的待推送消息,所述第一服务器为未被客户端注册的服务器,所述待推送消息携带第一消息通道信息;
根据预设的注册消息通道与服务器的对应关系,以及所述第一消息通道信息,确定出与将所述第一消息通道信息表征的推送消息通道对应的第二服务器;
将所述待推送消息转发至所述第二服务器,所述第二服务器为被所述客户端注册了所述推送消息通道的服务器。
在上述方案中,所述接收第一服务器发送的待推送消息之前,所述方法还包括:
接收至少一个服务器发送的第二消息通道信息,所述第二服务器属于所述至少一个服务器;
根据所述第二消息通道信息,注册与所述第二消息通道信息对应的注册消息通道,得到所述预设的注册消息通道与服务器的对应关系。
在上述方案中,所述接收第一服务器发送的待推送消息之前,所述方法还包括:
建立与所述第一服务器的通信连接;
相应地,所述接收第一服务器发送的待推送消息,包括:
当所述通信连接建立成功时,接收所述第一服务器发送的所述待推送消息。
本发明实施例还提供了一种消息推送方法,应用于第二服务器,所述第二服务器为被客户端注册了推送消息通道的服务器,所述方法包括:
接收中间设备转发的待推送消息;
从所述待推送消息中获取第一消息通道信息;
将所述待推送消息通过所述第一消息通道信息对应的所述推送消息通道推送给所述客户端。
在上述方案中,所述接收中间设备转发的待推送消息之前,所述方法还包括:
接收所述客户端发送的消息通道注册信息;
根据所述消息通道注册信息,注册所述推送消息通道。
在上述方案中,所述根据所述消息通道注册信息,注册所述推送消息通道之后,所述方法还包括:
当所述推送消息通道为预设消息通道时,将所述推送消息通道携带在第二消息通道信息中发送至所述中间设备,完成所述推送消息通道在所述中间设备上的注册。
在上述方案中,所述根据所述消息通道注册信息,注册所述推送消息通道之后,所述方法还包括:
当所述推送消息通道不为所述预设消息通道时,结束所述推送消息通道在所述中间设备上的注册。
本发明实施例又提供了一种消息推送方法,应用于第一服务器,所述第一服务器为未被客户端注册的服务器,所述方法包括:
当检测到存在待推送消息时,获取所述待推送消息的第一消息通道信息;
根据所述第一消息通道信息,将所述待推送消息发送至中间设备。
在上述方案中,所述根据所述第一消息通道信息,将所述待推送消息发送至中间设备,包括:
当所述第一消息通道信息对应的推送消息通道属于所述中间设备上的注册消息通道时,将所述待推送消息发送至所述中间设备。
在上述方案中,所述将所述待推送消息发送至中间设备之前,包括:
建立与所述中间设备的通信连接;
相应地,所述将所述待推送消息发送至中间设备,包括:
当所述通信连接建立成功时,将所述待推送消息发送至所述中间设备。
本发明实施例提供了一种中间设备,所述中间设备包括第一处理器、第一接收器、第一发送器、第一存储器和第一通信总线,所述第一接收器、所述第一发送器和所述第一存储器通过所述第一通信总线与所述第一处理器进行通信,所述第一存储器存储所述第一处理器可执行的指令,当所述指令被执行时,通过所述第一处理器执行如上述所述的消息推送方法。
本发明实施例提供了一种第二服务器,所述第二服务器为被所述客户端注册的服务器,所述第二服务器包括:第二处理器、第二接收器、第二发送器、第二存储器和第二通信总线,所述第二接收器、所述第二发送器和所述第二存储器通过所述第二通信总线与所述第二处理器进行通信,所述第二存储器存储所述第二处理器可执行的指令,当所述指令被执行时,通过所述第二处理器执行如上述所述的消息推送方法。
本发明实施例提供了一种第一服务器,所述第一服务器为未被客户端注册的服务器,所述第一服务器包括:第三处理器、第三发送器、第三存储器和第三通信总线,所述第三发送器和所述第三存储器通过所述第三通信总线与所述第三处理器进行通信,所述第三存储器存储所述第三处理器可执行的指令,当所述指令被执行时,通过所述第三处理器执行如上述所述的消息推送方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,应用于中间设备中,所述程序被第一处理器执行时实现如上述所述的消息推送方法。
本发明实施例还提供了一种计算机可读存储介质,其上存储有程序,应用于第二服务器中,所述第二服务器为被客户端注册的服务器,所述程序被第二处理器执行时实现如上述所述的消息推送方法。
本发明实施例又提供了一种计算机可读存储介质,其上存储有程序,应用于第一服务器中,所述第一服务器为未被客户端注册的服务器,所述程序被第三处理器执行时实现如上述所述的消息推送方法。
本发明实施例提供了一种消息推送方法、***及存储介质。首先,中间设备接收第一服务器发送的待推送消息,第一服务器为未被客户端注册的服务器,待推送消息携带第一消息通道信息;然后,中间设备根据预设的注册消息通道与服务器的对应关系,以及第一消息通道信息,确定出与将第一消息通道信息表征的推送消息通道对应的第二服务器;最后,中间设备将待推送消息转发至第二服务器,第二服务器为被客户端注册了推送消息通道的服务器。由于采用上述技术实现方案,在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
附图说明
图1为本发明实施例提供的一种消息推送***架构图;
图2为本发明实施例提供的一种应用于中间设备的消息推送方法的流程图一;
图3为本发明实施例提供的一种应用于中间设备的消息推送方法的流程图二;
图4为本发明实施例提供的一种应用于第二服务器的消息推送方法的流程图;
图5为本发明实施例提供的一种应用于客户端的消息推送方法的流程图;
图6为本发明实施例提供的一种应用于第一服务器的消息推送方法的流程图;
图7为本发明实施例提供的一种消息推送方法的流程图;
图8为本发明实施例提供的一种示例性的消息推送***;
图9为本发明实施例提供的一种中间设备的结构示意图一;
图10为本发明实施例提供的一种中间设备的结构示意图二;
图11为本发明实施例提供的一种第二服务器的结构示意图一;
图12为本发明实施例提供的一种第二服务器的结构示意图二;
图13为本发明实施例提供的一种客户端的结构示意图一;
图14为本发明实施例提供的一种客户端的结构示意图二;
图15为本发明实施例提供的一种第一服务器的结构示意图一;
图16为本发明实施例提供的一种第一服务器的结构示意图二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
如图1所示为本发明实施例提供的一种消息推送***架构图,本发明实施例提供的消息推送方法是基于该消息推送***的架构实现的。本发明实施例中的消息推送***1包括:客户端2、第二服务器3、中间设备4和第一服务器5。其中,第二服务器3分别与客户端2和中间设备4建立了通信连接,中间设备4还与第一服务器5建立了连接,客户端2与第二服务器3进行数据交互,第而服务器3和中间设备4进行数据交互,中间设备4和第一服务器5进行数据交互,来执行本发明实例提供的消息推送方法。
下面的实施例都是基于图1的***架构实现的。
实施例一
本发明实施例提供了一种消息推送方法,应用于中间设备。图2为本发明实施例提供的一种应用于中间设备的消息推送方法的流程图一,如图2所示,该消息推送方法可以包括:
S101、接收第一服务器发送的待推送消息,第一服务器为未被客户端注册的服务器,待推送消息携带第一消息通道信息。
在本发明实施例中,实现客户端能够收到未被客户端注册的服务器的待推送消息时,首先,中间设备需接收第一服务器发送的待推送消息。
需要说明的是,服务器有多种类型,具体可以分为具有消息推送服务的服务器和未部署消息推送服务的服务器,而具有消息推送服务器的服务器可以包括被客户端注册的服务器和未被客户端注册的服务器,但未部署消息推送服务的服务器则一定是未被客户端注册的服务器。也就是说,客户端仅向具有消息推送服务的服务器上订阅待推送消息。故,这里中间设备接收发送待推送消息的第一服务器是指任意服务器,该服务器可以是部署了消息推送服务,也可以是没部署消息推送服务,只要满足是未被客户端注册。
另外,未被客户端注册的服务器是指没有客户端向该服务器订阅待推送消息,相应地,被客户端注册的服务器是指有客户端向该服务器订阅待推送消息;客户端可以是浏览器和应用程序等,本发明实施例对此不作具体限定。
这里,待推送消息至少包括消息内容和第一消息通道信息,具体地,消息内容是指需向客户端推送的内容,第一消息通道信息可以是消息通道的名称。
优选地,在工程实施中,中间设备可以由第三方软件来实现,比如:ActiveMQ,Kafka等。
可以理解的是,由于中间设备的引入,使得可以在任意的服务器上进行消息推送,而不一定限制在具有消息推送服务的服务器上进行消息推送。
S102、根据预设的注册消息通道与服务器的对应关系,以及第一消息通道信息,确定出与将第一消息通道信息表征的推送消息通道对应的第二服务器。
在本发明实施例中,中间设备接收到未被客户端注册的第一服务器发送的待推送消息,从该待推送消息中获取第一消息通道信息之后,由于中间设备可以根据预设的注册消息通道与服务器的对应关系,以及该第一消息通道信息能够确定出与该第一消息通道信息表征的推送消息通道对应的第二服务器,因此,中间设备可以将该待推送消息转发给对应的第二服务器。
这里,第二服务器为被客户端注册了推送消息通道的服务器,也就是说第二服务器为中间设备转发待推送消息的服务器,而中间设备还会接收到除第二服务器之外其他被客户端注册了的服务器发送的第二消息通道信息,第二服务器与除第二服务器之外其他被客户端注册了的服务器共同构成本发明实施例中的至少一个服务器。
需要说明的是,当第一消息通道信息为消息通道的名称时,由于中间设备上具有多个注册消息通道(这里,中间设备上的注册消息通道可以称为主题),因此,可以根据该消息通道的名称从中间设备上的多个注册消息通道中确定一个名称相同的消息通道,即为推送消息通道。
在得到推送消息通道之后,根据该推送消息通道从预设的注册消息通道与服务器的对应关系中,确定该推送消息通道对应的被客户端注册了该推送消息通道的第二服务器。
这里,在中间设备上存储有预设的注册消息通道与服务器的对应关系,示例性地,该预设的注册消息通道与服务器的对应关系可以是表格的形式。另外,预设注册消息通道和服务器是多对多的关系,比如注册消息通道1对应于第二服务器1和第二服务器2,注册消息通道2对应于第二服务器1、第二服务器2和第二服务器3。此外,当给定一个推送消息通道,从预设的注册消息通道与服务器的对应关系中的注册消息通道里找到与该推送消息通道对应的第一注册消息通道,进而该第一注册消息通道所对应的服务器就是该待推送消息需转发的第二服务器。
S103、将待推送消息转发至第二服务器,第二服务器为被客户端注册了推送消息通道的服务器。
在本发明实施例中,中间设备根据待推送消息中的第一消息通道信息确定出该待推送消息要转发的第二服务器之后,将该待推送消息发送至第二服务器。
示例性地,中间设备接收到来自第一服务器1的待推送消息,该待推送消息携带的第一消息通道信息为消息通道2,根据消息通道2中在预设的注册消息通道与服务器的关系表格中得到对应的第二服务器为:第二服务器1、第二服务器2和第二服务器3;中间设备将该待推送消息转发至第二服务器1、第二服务器2和第二服务器3。
可以理解的是,由于客户端仅向具有消息推送服务的服务器上订阅待推送消息,因此只能具有消息推送服务的服务器才能向客户端推送消息,而本发明实施例通过设置中间设备,能够保障分布式环境下,其中任意一个服务器推送的消息,都能通过中间设备中转到被客户端注册了推送消息通道的服务器上,以将该待推送消息通过该推送消息通道推送给客户端,实现消息推送的水平扩展。
还可以理解的是,考虑到中间设备的中转效率和中转压力,本发明实施例中,并不是所有的待推送消息都要通过中间设备来进行中转,当且仅当未被客户端注册的第一服务器向客户端推送消息时才有必要将待推送消息通过中间设备来进行中转,即推送消息的服务器和被注册的服务器不是同一个服务器的情况下才将待推送消息在中间设备上进行中转。
进一步的,在本发明实施例中,如图3所示,在S101之前,该消息推送方法还包括:S104和S105,其中:
S104、接收至少一个服务器发送的第二消息通道信息,第二服务器属于至少一个服务器。
在本发明实施例中,中间设备能够将接收的第一服务器的待推送消息向第二服务器转发,是由于中间设备在将该待推送消息向第二服务器转发之前,中间设备接收到了至少一个服务器发送的第二消息通道信息,而第二服务器属于至少一个服务器。同样,该第二消息通道的信息可以为消息通道的名称。
S105、根据第二消息通道信息,注册与第二消息通道信息对应的注册消息通道,得到预设的注册消息通道与服务器的对应关系。
在本发明实施例中,中间设备接收到至少一个服务器发送的第二消息通道信息之后,根据该第二消息通道信息,在自身上注册与该第二消息通道信息对应的注册消息通道。这里,当第二消息通道信息为消息通道的名称时,即在中间设备上注册的注册消息通道是具有该名称的消息通道。
进一步地,在本发明实施例中,在S101之前,该消息推送方法还包括:S106,其中:
S106、建立与第一服务器的通信连接。
一般来说,由于只有建立了通信连接的双方才能互相通信,因此,本发明实施例中,中间设备在接收来自于第一服务器的待推送消息之前,需建立与第一服务器的通信连接。
可以理解的是,由于本发明实施例中任意服务器,即使是没有部署消息推送服务器的服务器,只要能够连接到中间设备上,均能完成消息推送。
需要说明的是,由于S106是S101之前的步骤,相应地,中间设备接收第一服务器发送的待推送消息,具体为:当通信连接建立成功时,中间设备接收第一服务器发送的待推送消息。也就是说,当中间设备与第一服务器建立通信连接后,只有当该通信连接建立成功时,中间设备才能够接收到第一服务器发送的待推送消息;反之,如果该通信连接建立失败,中间设备则不能够接收到第一服务器发送的待推送消息。
可以理解的是,由于中间设备能够向第二服务器中转第一服务器的待推送消息,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例二
本发明实施例还提供了一种消息推送方法,应用于第二服务器。图4为本发明实施例提供的一种应用于第二服务器的消息推送方法的流程图,如图4所示,该消息推送方法可以包括:
S201、接收中间设备转发的待推送消息。
在本发明实施例中,第二服务器在实现待推送消息的推送时,一部分是自身有待推送消息时,直接通过消息通道完成向客户端的推送;另一部分是向客户端推送接收到的中间设备转发的待推送消息。这里,第二服务器为被客户端注册了推送消息通道的服务器。
需要说明的是,服务器有多种类型,具体可以分为具有消息推送服务的服务器和未部署消息推送服务的服务器,而具有消息推送服务的服务器可以包括被客户端注册的服务器和未被客户端注册的服务器,但未部署消息推送服务的服务器则一定是未被客户端注册的服务器。也就是说,客户端仅向具有消息推送服务的服务器上订阅待推送消息。故,这里接收中间设备转发的待推送消息的第二服务器是指被客户端注册的服务器中且注册了该推送消息通道的服务器,该服务器是具有消息推送服务的服务器,因此,当该服务器自身有待推送消息时,能够直接通过消息通道完成向客户端的推送。另外,还能接收来自中间设备中转的待推送消息。
此外,被客户端注册的服务器是指存在客户端向该服务器订阅待推送消息;相应地,未被客户端注册的服务器是指不存在客户端向该服务器订阅待推送消息;而被客户端注册了推送消息通道的服务器是指存在客户端向该服务器订阅了通过推送消息通道进行推送消息的服务器。
优选地,在工程实施中,中间设备可以由第三方软件来实现,比如:ActiveMQ,Kafka等。
S202、从待推送消息中获取第一消息通道信息。
在本发明实施例中,第二服务器接收到待推送消息后,从待推送消息中获取第一消息通道信息。
这里,待推送消息至少包括消息内容和第一消息通道信息,具体地,消息内容是指需向客户端推送的内容,第一消息通道信息可以是消息通道的名称,用于确定推送消息通道。
S203、将待推送消息通过第一消息通道信息对应的推送消息通道推送给客户端。
需要说明的是,由于待推送消息至少包括消息内容和第一消息通道信息,故,第二服务器可以根据第一消息通信信息对应的推送消息通道将待推送消息推送给客户端。
具体地,客户端可以是浏览器和应用程序等,本发明实施例对此不作具体限定。
进一步地,在本发明实施例中,在S201之前,该消息推送方法还包括S204和S205,其中:
S204、接收客户端发送的消息通道注册信息。
在本发明实施例中,由于只有被客户端注册的服务器才能向客户端进行消息推送,因此,第二服务器在接收中间设备转发的待推送消息之前,还需要接收客户端的注册。首先是,第二服务器接收客户端发送的消息通道注册信息。
示例性地,浏览器1需订阅第二服务器1的性能推送消息,会把订阅内容、消息通道信息、第二服务器标识以及浏览器标识组成消息通道注册信息发送至第二服务器。
S205、根据消息通道注册信息,注册推送消息通道。
在本发明实施例中,第二服务器接收到消息通道注册信息后,根据消息通道注册信息,进行推送消息通道的注册。
需要说明的是,推送消息通道为客户端向第二服务器注册的消息通道,使得第二服务器可以通过该推送消息通道向客户端进行消息的推送。这里进行消息的推送可以是第二服务器自身需推送的待推送消息,还可以是接收到的中间设备转发的待推送消息。
示例性地,第二服务器2接收到来自浏览器2的消息通道2注册信息后,为浏览器2完成第二服务器2中的消息通道2的注册。
进一步地,在本发明实施例中,在S205之后,该消息推送方法还包括:
S206、当推送消息通道为预设消息通道时,将推送消息通道携带在第二消息通道信息中发送至中间设备,完成推送消息通道在中间设备上的注册。
在本发明实施例中,当第二服务器完成推送消息通道的注册之后,会有判断推送消息通道的类型的过程,当推送消息通道为预设消息通道时,将推送消息通道携带在第二消息通道信息中发送至中间设备,用以完成推送消息通道在中间设备上的注册。
优选地,预设消息通道为消息通道的名称中包含预设标识的消息通道。
可以理解的是,第二服务器通过根据预设消息通道确定推送消息通道的类型,用来作为判断是否需在中间设备上注册该推送消息通道。
另外,在本发明实施例中,在S205之后,该消息推送方法还包括:
S207、当推送消息通道不为预设消息通道时,结束推送消息通道在中间设备上的注册。
第二服务器完成客户端的推送消息通道注册之后,如果判断该推送消息通道不为预设消息通道,将结束推送消息通道在中间设备上的注册。
可以理解的是,本发明实施例在支持消息推送的水平扩展的情况下,通过在设置预设标识得到预设消息通道,能精确控制推送消息的中转。另外,通过该预设标识,能够精准区分推送消息是普通消息还是支持水平扩展的消息,从而缓解了消息中转压力。
进一步地,在本发明实施例中,在S204之前,该消息推送方法还包括S208-S210,其中:
S208、接收客户端发送的长连接请求。
需要说明的是,客户端如果能够接收到第二服务器的待推送消息,一定是客户端与第二服务器之间建立了通信连接。首先,第二服务器接收客户端发送的长连接请求。
这里,长连接请求是指通过建立一次连接请求,就能够实现永久的通信。
优选地,长连接请求可以是websocket请求。
可以理解的是,通过建立websocket,客户端和第二服务器建立连接,通过已建立的通信信道来发送和接收数据而不需要额外的开销。
S209、根据长连接请求建立与客户端的连接。
在本发明实施例中,第二服务器接收到长连接请求后,根据该长连接请求建立与客户端的连接。
S210、将长连接建立信息发送至客户端。
在本发明实施例中,第二服务器根据该长连接请求建立与客户端的连接后,会向客户端反馈一个长连接建立信息,用于通知客户端该长连接是否建立成功。也就是说,该长连接建立信息可以为连接建立成功的信息,还可以为连接建立失败的信息,本发明实施例对此不作具体限定。
需要说明的是,由于S208-S210是S204之前的步骤,相应地,S204中第二服务器接收客户端发送的消息通道注册信息,具体为:当长连接建立信息表征长连接建立成功时,第二服务器接收客户端发送的消息通道注册信息。
可以理解的是,由于第二服务器将客户端的消息通道信息发送至中间设备进行了同名注册,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例三
本发明实施例又提供了一种消息推送方法,应用于客户端。图5为本发明实施例提供的一种应用于客户端的消息推送方法的流程图,如图5所示,该消息推送方法可以包括:
S301、监听推送消息通道。
在本发明实施例中,当客户端订阅了某推送消息通道的主动推送消息时,通过对该推送消息通道进行监听,获得订阅了的待推送消息。
这里,推送消息通道是指用于第二服务器向客户端传输待推送消息的通道。客户端可以是浏览器和应用程序等,本发明实施例对此不作具体限定。
S302、接收第二服务器通过推送消息通道发送的待推送消息,第二服务器为被客户端注册了推送消息通道的服务器。
在本发明实施例中,如果客户端订阅了某推送消息通道的主动推送消息,通过对推送消息通道的监听,就能够接收到被客户端注册了推送消息通道的第二服务器通过该推送消息通道发送的待推送消息。
需要说明的是,服务器有多种类型,具体可以分为具有消息推送服务的服务器和未部署消息推送服务的服务器,而具有消息推送服务的服务器可以包括被客户端注册的服务器和未被客户端注册的服务器,但未部署消息推送服务的服务器则一定是未被客户端注册的服务器。也就是说,客户端仅向具有消息推送服务的服务器上订阅待推送消息。故,这里的第二服务器是被客户端注册的具有消息推送服务的服务器中且注册了该推送消息通道的服务器。
此外,被客户端注册的服务器是指存在客户端向该服务器订阅待推送消息;相应地,未被客户端注册的服务器是指不存在客户端向该服务器订阅待推送消息;而被客户端注册了推送消息通道的服务器是指存在客户端向该服务器订阅了通过推送消息通道进行推送消息的服务器。
进一步地,在本发明实施例中,在S301之前,该消息推送方法还包括S303和S304,其中:
S303、获取消息通道注册信息,消息通道注册信息用于客户端向第二服务器注册推送消息通道。
在本发明实施例中,客户端进行消息通道的注册时,可以根据功能的要求,获取消息通道注册信息。另外,客户端明确自己要注册的消息通道是否需要支持分布式,即要注册的消息通道是否需要水平扩展。
需要说明的是,由于消息通道注册信息至少包含消息通道信息,因此,当客户端订阅的待推送消息需通过支持水平扩展的消息通道进行消息推送时,该消息通道信息中包含预设标识;相应地,当客户端订阅的待推送消息不需要通过支持水平扩展的消息通道进行消息推送时,该消息通道信息中不包含该预设标识。另外,消息通道注册信息用于客户端向第二服务器注册推送消息通道。
S304、将消息通道注册信息发送至第二服务器。
在本发明实施例中,客户端确定了消息通道注册信息后,经该消息通道注册信息发送至第二服务器,用于第二服务器完成相应消息通道的注册。
需要说明的是,S303-S304为S301之前的步骤,即客户端接收到待推送消息之前,需完成推送消息通道的注册。
进一步地,在本发明实施例中,在S303之前,该消息推送方法还包括S305和S306,其中:
S305、向第二服务器发送长连接请求。
在本发明实施例中,客户端将消息通道注册信息发送至第二服务器之前,需建立与第二服务器的连接。
优选地,客户端与第二服务器之间的连接为长连接,这样,能够完成一次连接,永久通信。这里,长连接请求可以是websocket请求。
可以理解的是,通过建立websocket,客户端和第二服务器建立连接,通过已建立的通信信道来发送和接收数据而不需要额外的开销。
S306、接收第二服务器根据长连接请求发送的长连接建立信息。
在本发明实施例中,客户端向第二服务器发送了长连接请求后,会接收到第二服务器反馈的长连接建立信息,用于通知客户端该长连接是否建立成功。也就是说,该长连接建立信息可以为连接建立成功的信息,还可以为连接建立失败的信息,本发明实施例对此不作具体限定。
需要说明的是,由于S305和S306为S303之前的步骤,相应地,S303中的将消息通道注册信息发送至第二服务器,具体为:当长连接建立信息表征长连接建立成功时,获取消息通道注册信息。
可以理解的是,由于客户端向第二服务器注册的消息通道信息在中间设备进行了相同的注册,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例四
本发明实施例又提供了另一种消息推送方法,应用于第一服务器。图6为本发明实施例提供的一种应用于第一服务器的消息推送方法的流程图,如图6所示,该消息推送方法可以包括:
S401、当检测到存在待推送消息时,获取待推送消息的第一消息通道信息。
在本发明实施例中,第一服务器为未被客户端注册的服务器,当第一服务器有待推送消息要推送时,获取该待推送消息的消息通道信息。
需要说明的是,服务器有多种类型,具体可以分为具有消息推送服务的服务器和未部署消息推送服务的服务器,而具有消息推送服务的服务器可以包括被客户端注册的服务器和未被客户端注册的服务器,但未部署消息推送服务的服务器则一定是未被客户端注册的服务器。也就是说,客户端仅向具有消息推送服务的服务器上订阅待推送消息。故,这里中间设备接收发送待推送消息的第一服务器是指任意服务器,该服务器可以是部署了消息推送服务,也可以是没部署消息推送服务,只要满足是未被客户端注册。
另外,未被客户端注册的服务器是指不存在客户端向该服务器订阅待推送消息,相应地,被客户端注册的服务器是指存在客户端向该服务器订阅待推送消息;客户端可以是浏览器和应用程序等,本发明实施例对此不作具体限定。
这里,待推送消息至少包括消息内容和消息通道信息,具体地,消息内容是指需向客户端推送的内容,消息通道信息可以是消息通道的名称。
S402、根据第一消息通道信息,将待推送消息发送至中间设备。
在本发明实施例中,第一服务器获取到消息通道信息后,通过对该消息通道信息进行判断,来确定是否将该待推送消息发送至中间设备。
具体地,在本发明实施例中,客户端根据第一消息通道信息,将待推送消息发送至中间设备,包括:
当第一消息通道信息对应的推送消息通道属于中间设备上的注册消息通道时,将待推送消息发送至中间设备。
这里,注册消息通道为中间设备上注册的全部的消息通道。
相应地,当第一消息通道信息对应的推送消息通道不属于中间设备上的注册消息通道时,结束待推送消息的推送。
优选地,在工程实施中,中间设备可以由第三方软件来实现,比如:ActiveMQ,Kafka等。
进一步地,在本发明实施例中,由于只有建立了通信连接的双方才能互相通信,因此,在S401之前,该消息推送方法还包括:
S403、建立与中间设备的通信连接。
可以理解的是,由于本发明实施例中任意服务器,即使是没有部署消息推送服务器的服务器,只要能够连接到中间设备上,均能完成消息推送。
相应地,当第一服务器与中间设备建立连接后,只有当该连接建立成功时,第一服务器才能向中间设备发送待推送消息,S401中将待推送消息发送至中间设备,为:当通信连接建立成功时,将待推送消息发送至中间设备。具体为:当连接建立成功时,第一服务器根据消息通道信息,将待推送消息发送至中间设备;反之,如果该连接建立失败,第一服务器不能向中间设备发送待推送消息。
可以理解的是,由于第一服务器可以通过向中间设备发送待推送消息,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例五
本发明实施例提供了一种消息推送方法,图7为本发明实施例提供的一种消息推送方法的流程图,如图7所示,该消息推送方法可以包括:
S501、客户端获取消息通道注册信息,消息通道注册信息用于客户端向第二服务器注册推送消息通道。
在本发明实施例中,S501实现过程的描述与实施例三中S303实现过程的描述一致,此处不再赘述。
S502、客户端将消息通道注册信息发送至第二服务器。
在本发明实施例中,S502实现过程的描述与实施例三中S304实现过程的描述一致,此处不再赘述。
S503、第二服务器根据消息通道注册信息,注册推送消息通道。
在本发明实施例中,S503实现过程的描述与实施例二中S205实现过程的描述一致,此处不再赘述。
S504、客户端监听推送消息通道。
在本发明实施例中,S504实现过程的描述与实施例三中S301实现过程的描述一致,此处不再赘述。
S505、当推送消息通道为预设消息通道时,第二服务器将推送消息通道携带在第二消息通道信息中发送至中间设备。
在本发明实施例中,S505实现过程的描述与实施例二中S206实现过程的描述一致,此处不再赘述。
需要说明的是,本发明实施例还存在另一种处理方式,具体实现过程的描述与实施例二中S207实现过程的描述一致,此处不再赘述。
S506、中间设备接收至少一个服务器发送的第二消息通道信息,第二服务器属于至少一个服务器。
在本发明实施例中,S506实现过程的描述与实施例一中S104实现过程的描述一致,此处不再赘述。
S507、中间设备根据第二消息通道信息,注册与第二消息通道信息对应的注册消息通道,得到预设的注册消息通道与服务器的对应关系。
在本发明实施例中,S507实现过程的描述与实施例一中S105实现过程的描述一致,此处不再赘述。
S508、第一服务器建立与中间设备的通信连接。
在本发明实施例中,S508实现过程的描述与实施例四中S403实现过程的描述一致,此处不再赘述。
S509、当第一服务器检测到存在待推送消息时,获取待推送消息的第一消息通道信息。
在本发明实施例中,S509实现过程的描述与实施例四中S401实现过程的描述一致,此处不再赘述。
S510、当第一消息通道信息对应的推送消息通道属于中间设备上的注册消息通道,以及通信连接建立成功时,第一服务器将待推送消息发送至中间设备。
在本发明实施例中,S510实现过程的描述与实施例四中S402实现过程的描述一致,此处不再赘述。
S511、中间设备根据预设的注册消息通道与服务器的对应关系,以及第一消息通道信息,确定出与将第一消息通道信息表征的推送消息通道对应的第二服务器。
在本发明实施例中,S511实现过程的描述与实施例一中S102实现过程的描述一致,此处不再赘述。
S512、中间设备将待推送消息转发至第二服务器,第二服务器为被客户端注册了推送消息通道的服务器。
在本发明实施例中,S512实现过程的描述与实施例一中S103实现过程的描述一致,此处不再赘述。
S513、第二服务器从待推送消息中获取第一消息通道信息。
在本发明实施例中,S513实现过程的描述与实施例二中S202实现过程的描述一致,此处不再赘述。
S514、第二服务器将待推送消息通过第一消息通道信息对应的推送消息通道推送给客户端。
在本发明实施例中,S514实现过程的描述与实施例二中S203实现过程的描述一致,此处不再赘述。
示例性地,图8为本发明实施例提供的一种示例性的消息推送***,如图8所示:该示例性的消息推送***包括:四个需要订阅待推送消息的客户端:前端A_1、前端A_2、前端B和前端C,两个被客户端注册了推送消息通道的第二服务器:消息推送服务器A和消息推送服务器B,一个具有消息推送服务器的服务器:消息推送服务器C,一个未被客户端注册的第一服务器:普通服务器D(不具有消息推送服务),以及一个中间设备:消息中间件。其中,消息推送服务器A、消息推送服务器B和消息推送服务器C为本发明实施例中向中间设备发送第二消息通道信息的至少一个服务器。由于前端A_1,前端A_2和前端B订阅的推送消息业务量较大,需要通过水平扩展技术来实现通过多个服务器推送消息;而前端C则不需要。
一方面,通过判断前端注册消息通道的名称是否以“/broadcast_channel”开头,以区别普通消息推送和水平扩展消息推送,“/broadcast_channel”为预设标识。只有前端注册了水平扩展的消息推送通道时,才会在消息中间件注册同名的主题,进而得到预设的注册消息通道和服务器的对应关系。如图8所示,“/broadcast_channel_1”和“/broadcast_channel_2”为支持水平扩展的消息通道,在消息中间件上注册同名主题:“/broadcast_channel_1”和“/broadcast_channel_2”,其中,主题为消息通道信息,即消息通道的名称,并且消息中间件上所有的主题构成了本发明实施例中中间设备上的注册消息通道,也就是说,前端向服务器注册消息通道,而服务器向消息中间件注册主题,并且注册主题的过程包括至少一个服务器向消息中间件发送第二消息通道信息;而“/normal_channel”为不支持水平扩展的消息通道,不需在消息中间件上注册。具体地,前端A_1向水平扩展的消息推送服务器A注册了消息通道“/broadcast_channel_1”,消息推送服务器A向消息中间件注册主题“/broadcast_channel_1”;前端A_2向水平扩展的消息推送服务器A注册了消息通道“/broadcast_channel_2”,消息推送服务器A向消息中间件注册主题“/broadcast_channel_2”;前端B向水平扩展的消息推送服务器B注册了消息通道“/broadcast_channel_2”,消息推送服务器B向消息中间件注册主题“/broadcast_channel_2”;不包含消息推送服务的普通服务器D,向消息中间件的主题“/broadcast_channel_2”发送了一条消息“Message_2”,此时,推送消息通道为消息通道“/broadcast_channel_2”,注册了主题“/broadcast_channel_2”的消息推送服务器A和消息推送服务器B的对应***,收到了消息,并且分别将推送消息“Message_2”推送到前端A_2和前端B。完成了水平扩展的消息推送。并且实现了可以在任意服务器(部署了消息推送的服务器和普通的非消息推送服务器均可)向前端推送消息。同时,消息推送实现了精准控制。当普通服务器D向“/broadcast_channel_2”主题推送消息时,只有实际注册了消息通道“/broadcast_channel_2”的前端A_2和前端B收到了消息,而仅注册了消息通道“/broadcast_channel_1”的前端A_1是不会收到消息的。另外,当消息推送服务器B有消息向消息通道“/broadcast_channel_2”推送时,直接将该消息通过消息通道“/broadcast_channel_2”发送至前端B即可。
另一方面,进行消息推送时,并不是所有的消息推送服务器都要中转消息,只有前端真正注册了该消息通道的情况下,发送至该通道的消息才会在消息推送服务器进行中转,从而实现消息中转的精准控制。如图8所示:当普通服务器D向“/broadcast_channel_2”推送消息时,只有消息推送服务器A和消息推送服务器B才会向分别向前端A_2和前端B推送消息。
此外,如图8所示,由于前端C注册的消息通道为“/normal_channel”,因此只能通过消息推送服务器C对其进行消息推送。可以通过不同的消息通道,判断属于支持水平扩展的消息推送,还是普通的消息推送,从而减轻消息中间件的压力,具体前端浏览器C向水平扩展的消息推送服务器C注册了消息通道“/normal_channel”,由于消息通道并没有以“/broadcast_channel”开头,因此该消息通道为普通消息推送通道,不需要支持水平扩展,因此,消息服务器C不需要向消息中间件注册主题。消息推送服务器C,直接向“/normal_channel”通道推送消息“Message_1”。前端C收到推送消息“Message_1”。精准的控制区分了普通的消息推送和支持水平扩展的消息推送。只有前端浏览器向消息推送服务器注册了以“/broadcast_channel”开头的消息通道的时候,消息推送服务器才会向消息中间件注册同名主题,进行消息中转,否则,只会进行普通的消息推送。
可以理解的是,在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例六
基于实施例一同一发明构思下,本发明实施例提供了一种中间设备4,对应于一种应用于中间设备的消息推送方法,图9为本发明实施例提供的一种中间设备的结构示意图一,如图9所示,所示中间设备4包括:
第一接收单元40,用于接收第一服务器发送的待推送消息,所述第一服务器为未被客户端注册的服务器,所述待推送消息携带第一消息通道信息;
第一确定单元41,用于根据预设的注册消息通道与服务器的对应关系,以及所述第一消息通道信息,确定出与将所述第一消息通道信息表征的推送消息通道对应的第二服务器;
第一发送单元42,用于将所述待推送消息转发至所述第二服务器,所述第二服务器为被所述客户端注册了所述推送消息通道的服务器。
可选地,所述中间设备4还包括:第一注册单元43,用于接收至少一个服务器发送的第二消息通道信息,所述第二服务器属于所述至少一个服务器;以及根据所述第二消息通道信息,注册与所述第二消息通道信息对应的注册消息通道,得到所述预设的注册消息通道与服务器的对应关系。
可选地,所述中间设备4还包括:第一连接单元44,用于建立与所述第一服务器的通信连接;
相应地,所述第一接收单元40,具体用于当所述通信连接建立成功时,接收所述第一服务器发送的所述待推送消息。
在实际应用中,上述第一确定单元41、第一注册单元43和第一连接单元44可由位于中间设备4上的第一处理器44实现,具体为中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital SignalProcessing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现,第一发送单元42可由第一发送器47实现,第一接收单元40可由第一接收器46实现。
本发明实施例提供了一种中间设备4,如图10所示,所述中间设备4包括第一处理器45、第一接收器46、第一发送器47、第一存储器48和第一通信总线49,所述第一接收器46、所述第一发送器47和所述第一存储器48通过所述第一通信总线49与所述第一处理器45进行通信,所述第一存储器48存储所述第一处理器45可执行的指令,当所述指令被执行时,通过所述第一处理器45执行如实施例一所述的消息推送方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,应用于中间设备4中,所述程序被第一处理器45执行时实现如实施例一所述的消息推送方法。
可以理解的是,由于中间设备能够向第二服务器中转第一服务器的待推送消息,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例七
基于实施例二同一发明构思下,本发明实施例提供了一种第二服务器3,所述第二服务器3为被所述客户端注册了推送消息通道的服务器,对应于一种应用于第二服务器的消息推送方法,图11为本发明实施例提供的一种第二服务器的结构示意图一,如图11所示,所示第二服务器3包括:
第二接收单元30,用于接收中间设备转发的待推送消息;
第一获取单元31,用于从所述待推送消息中获取第一消息通道信息;
第二发送单元32,用于将所述待推送消息通过所述第一消息通道信息对应的所述推送消息通道推送给所述客户端。
可选地,所述第二服务器3还包括:第二注册单元33,用于接收所述客户端发送的消息通道注册信息;以及根据所述消息通道注册信息,注册所述推送消息通道。
可选地,所述第二发送单元32,还用于当所述推送消息通道为预设消息通道时,将所述推送消息通道携带在第二消息通道信息中发送至所述中间设备,完成所述推送消息通道在所述中间设备上的注册。
可选地,所述第二服务器3还包括:第一结束单元34,用于当所述推送消息通道不为所述预设消息通道时,结束所述推送消息通道在所述中间设备上的注册。
在实际应用中,上述第一获取单元31、第二注册单元33和第一结束单元34可由位于第二服务器3上的第二处理器35实现,具体为中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital SignalProcessing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现,第二发送单元32可由第二发送器37实现,第二接收单元30可由第二接收器36实现。
本发明实施例提供了一种第二服务器3,如图12所示,所述第二服务器3包括第二处理器35、第二接收器36、第二发送器37、第二存储器38和第二通信总线39,所述第二接收器36、所述第二发送器37和所述第二存储器38通过所述第二通信总线39与所述第二处理器35进行通信,所述第二存储器38存储所述第二处理器35可执行的指令,当所述指令被执行时,通过所述第二处理器35执行如实施例二所述的消息推送方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,应用于第二服务器3中,所述程序被第二处理器35执行时实现如实施例二所述的消息推送方法。
可以理解的是,由于第二服务器将客户端的消息通道信息发送至中间设备进行了同名注册,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例八
基于实施例三同一发明构思下,本发明实施例提供了一种客户端2,对应于一种应用于客户端的一种消息推送方法,图13为本发明实施例提供的一种客户端的结构示意图一,如图13所示,所示客户端2包括:
第一监听单元20,用于监听推送消息通道;
第三接收单元21,用于接收第二服务器通过所述推送消息通道发送的待推送消息,所述第二服务器为被所述客户端注册了所述推送消息通道的服务器。
可选地,所述客户端2还包括:
第一确定单元22,用于获取消息通道注册信息,所述消息通道注册信息用于所述客户端向所述第二服务器注册所述推送消息通道;
第四发送单元23,用于将所述消息通道注册信息发送至所述第二服务器。
在实际应用中,上述第一监听单元20和第一确定单元22可由位于客户端2上的第四处理器24实现,具体为中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital Signal Processing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现,第四发送单元23可由第四发送器26实现,第三接收单元21可由第四接收器25实现。
本发明实施例提供了一种客户端2,如图14所示,所述客户端2包括第四处理器24、第三接收器25、第四发送器26、第四存储器27和第四通信总线28,所述第三接收器25、所述第四发送器26和所述第四存储器27通过所述第四通信总线28与所述第四处理器24进行通信,所述第四存储器27存储所述第四处理器24可执行的指令,当所述指令被执行时,通过所述第四处理器24执行如实施例三所述的消息推送方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,应用于客户端2中,所述程序被第四处理器24执行时实现如实施例四所述的消息推送方法。
可以理解的是,由于客户端向第二服务器注册的消息通道信息在中间设备进行了相同的注册,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
实施例九
基于实施例四同一发明构思,本发明实施例提供了一种第一服务器5,所述第一服务器5为未被客户端注册的服务器,对应于一种应用于第一服务器的一种消息推送方法,图15为本发明实施例提供的一种第一服务器的结构示意图一,如图15所示,所示第一服务器5包括:
第二获取单元50,用于当检测到存在待推送消息时,获取所述待推送消息的第一消息通道信息;
第三发送单元51,用于根据所述第一消息通道信息,将所述待推送消息发送至中间设备。
可选地,所述第三发送单元51,具体用于当所述第一消息通道信息对应的推送消息通道属于所述中间设备上的注册消息通道时,将所述推送消息发送至所述中间设备。
可选地,所述第一服务器5还包括:第二连接单元52,用于建立与所述中间设备的通信连接。
相应地,所述第三发送单元51,具体用于当所述通信连接建立成功时,将所述待推送消息发送至所述中间设备。
在实际应用中,上述第二获取单元50和第二连接单元52可由位于第一服务器5上的第三处理器53实现,具体为中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital Signal Processing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现,第三发送单元51可由第三发送器54实现。
本发明实施例提供了一种第一服务器5,如图16所示,所述第一服务器5包括第三处理器53、第三发送器54、第三存储器55和第三通信总线56,所述第三发送器54和所述第三存储器55通过所述第三通信总线56与所述第三处理器53进行通信,所述第三存储器55存储所述第三处理器53可执行的指令,当所述指令被执行时,通过所述第三处理器53执行如实施例四所述的消息推送方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,应用于第一服务器5中,所述程序被第三处理器53执行时实现如实施例四所述的消息推送方法。
可以理解的是,由于第一服务器可以通过向中间设备发送待推送消息,使得在向客户端进行消息推送时,未被客户端注册的第一服务器能够通过中间设备的消息中转,完成向客户端的消息推送,即实现了将客户端订阅的待推送消息扩展到不同的推送服务器上进行消息推送,减少了服务器的推送压力,降低了对服务器的性能要求,使得服务器达到了负载均衡。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (16)
1.一种消息推送方法,应用于中间设备,其特征在于,所述方法包括:
接收第一服务器发送的待推送消息,所述第一服务器为未被客户端注册的服务器,所述待推送消息携带第一消息通道信息;
根据预设的注册消息通道与服务器的对应关系,以及所述第一消息通道信息,确定出与将所述第一消息通道信息表征的推送消息通道对应的第二服务器;
将所述待推送消息转发至所述第二服务器,所述第二服务器为被所述客户端注册了所述推送消息通道的服务器。
2.根据权利要求1所述的方法,其特征在于,所述接收第一服务器发送的待推送消息之前,所述方法还包括:
接收至少一个服务器发送的第二消息通道信息,所述第二服务器属于所述至少一个服务器;
根据所述第二消息通道信息,注册与所述第二消息通道信息对应的注册消息通道,得到所述预设的注册消息通道与服务器的对应关系。
3.根据权利要求1或2所述的方法,其特征在于,所述接收第一服务器发送的待推送消息之前,所述方法还包括:
建立与所述第一服务器的通信连接;
相应地,所述接收第一服务器发送的待推送消息,包括:
当所述通信连接建立成功时,接收所述第一服务器发送的所述待推送消息。
4.一种消息推送方法,应用于第二服务器,其特征在于,所述第二服务器为被客户端注册了推送消息通道的服务器,所述方法包括:
接收中间设备转发的待推送消息;
从所述待推送消息中获取第一消息通道信息;
将所述待推送消息通过所述第一消息通道信息对应的所述推送消息通道推送给所述客户端。
5.根据权利要求4所述的方法,其特征在于,所述接收中间设备转发的待推送消息之前,所述方法还包括:
接收所述客户端发送的消息通道注册信息;
根据所述消息通道注册信息,注册所述推送消息通道。
6.根据权利要求5所述的方法,其特征在于,所述根据所述消息通道注册信息,注册所述推送消息通道之后,所述方法还包括:
当所述推送消息通道为预设消息通道时,将所述推送消息通道携带在第二消息通道信息中发送至所述中间设备,完成所述推送消息通道在所述中间设备上的注册。
7.根据权利要求5所述的方法,其特征在于,所述根据所述消息通道注册信息,注册所述推送消息通道之后,所述方法还包括:
当所述推送消息通道不为所述预设消息通道时,结束所述推送消息通道在所述中间设备上的注册。
8.一种消息推送方法,应用于第一服务器,其特征在于,所述第一服务器为未被客户端注册的服务器,所述方法包括:
当检测到存在待推送消息时,获取所述待推送消息的第一消息通道信息;
根据所述第一消息通道信息,将所述待推送消息发送至中间设备。
9.根据权利要求8所述的方法,其特征在于,所述根据所述第一消息通道信息,将所述待推送消息发送至中间设备,包括:
当所述第一消息通道信息对应的推送消息通道属于所述中间设备上的注册消息通道时,将所述待推送消息发送至所述中间设备。
10.根据权利要求8或9所述的方法,其特征在于,所述将所述待推送消息发送至中间设备之前,包括:
建立与所述中间设备的通信连接;
相应地,所述将所述待推送消息发送至中间设备,包括:
当所述通信连接建立成功时,将所述待推送消息发送至所述中间设备。
11.一种中间设备,其特征在于,所述中间设备包括第一处理器、第一接收器、第一发送器、第一存储器和第一通信总线,所述第一接收器、所述第一发送器和所述第一存储器通过所述第一通信总线与所述第一处理器进行通信,所述第一存储器存储所述第一处理器可执行的指令,当所述指令被执行时,通过所述第一处理器执行如权利要求1-3任一项所述的方法。
12.一种第二服务器,其特征在于,所述第二服务器为被所述客户端注册的服务器,所述第二服务器包括:第二处理器、第二接收器、第二发送器、第二存储器和第二通信总线,所述第二接收器、所述第二发送器和所述第二存储器通过所述第二通信总线与所述第二处理器进行通信,所述第二存储器存储所述第二处理器可执行的指令,当所述指令被执行时,通过所述第二处理器执行如权利要求4-7任一项所述的方法。
13.一种第一服务器,其特征在于,所述第一服务器为未被客户端注册的服务器,所述第一服务器包括:第三处理器、第三发送器、第三存储器和第三通信总线,所述第三发送器和所述第三存储器通过所述第三通信总线与所述第三处理器进行通信,所述第三存储器存储所述第三处理器可执行的指令,当所述指令被执行时,通过所述第三处理器执行如权利要求8-10任一项所述的方法。
14.一种计算机可读存储介质,其上存储有程序,应用于中间设备中,其特征在于,所述程序被第一处理器执行时实现如权利要求1-3任一项所述的方法。
15.一种计算机可读存储介质,其上存储有程序,应用于第二服务器中,其特征在于,所述第二服务器为被客户端注册的服务器,所述程序被第二处理器执行时实现如权利要求4-7任一项所述的方法。
16.一种计算机可读存储介质,其上存储有程序,应用于第一服务器中,其特征在于,所述第一服务器为未被客户端注册的服务器,所述程序被第三处理器执行时实现如权利要8-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810623695.7A CN110611691B (zh) | 2018-06-15 | 2018-06-15 | 一种消息推送方法、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810623695.7A CN110611691B (zh) | 2018-06-15 | 2018-06-15 | 一种消息推送方法、***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110611691A true CN110611691A (zh) | 2019-12-24 |
CN110611691B CN110611691B (zh) | 2022-11-15 |
Family
ID=68888595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810623695.7A Active CN110611691B (zh) | 2018-06-15 | 2018-06-15 | 一种消息推送方法、***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110611691B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917784A (zh) * | 2020-08-06 | 2020-11-10 | 湖北盈诺网络科技有限公司 | 一种不同于Web服务器应用的安全互联互通协议方法 |
CN112202781A (zh) * | 2020-09-30 | 2021-01-08 | 广东巴金斯科技有限公司 | 一种电商大数据量回执报文处理方法、装置和*** |
CN112468600A (zh) * | 2021-02-02 | 2021-03-09 | 上海有孚智数云创数字科技有限公司 | 一种基于网络矩阵的应用消息通知方法、***及存储介质 |
CN112839106A (zh) * | 2021-02-25 | 2021-05-25 | 北京北信源软件股份有限公司 | 通信方法及装置、电子设备及介质 |
CN113765774A (zh) * | 2020-11-16 | 2021-12-07 | 西安京迅递供应链科技有限公司 | 消息实时同步方法、装置、电子设备及介质 |
CN114172946A (zh) * | 2021-12-06 | 2022-03-11 | 京东科技信息技术有限公司 | 请求结果发送方法、装置、电子设备和计算机可读介质 |
CN114374697A (zh) * | 2022-01-14 | 2022-04-19 | 瀚云科技有限公司 | 道路过车信息的推送***、方法、电子设备及存储介质 |
CN114760296A (zh) * | 2022-03-07 | 2022-07-15 | 中银金融科技有限公司 | 信息发送方法及装置 |
CN115118773A (zh) * | 2022-06-29 | 2022-09-27 | 宁波三星智能电气有限公司 | 数据文件推送方法、服务器和计算机可读存储介质 |
CN115174512A (zh) * | 2022-05-27 | 2022-10-11 | 青岛海尔科技有限公司 | 消息推送方法及装置、存储介质及电子装置 |
CN115361442A (zh) * | 2022-10-18 | 2022-11-18 | 北京京东拓先科技有限公司 | 一种消息推送方法及装置、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120042004A1 (en) * | 2010-08-12 | 2012-02-16 | Research In Motion Limited | Plug in registration method and apparatus for push content delivery |
CN103685396A (zh) * | 2012-09-14 | 2014-03-26 | 北京神州泰岳软件股份有限公司 | 一种实现消息推送的方法和*** |
CN103747427A (zh) * | 2013-12-30 | 2014-04-23 | 华为终端有限公司 | 一种消息的推送方法和终端 |
CN104811364A (zh) * | 2014-01-24 | 2015-07-29 | 华为技术有限公司 | 一种消息的推送方法、***及消息代理服务器和终端设备 |
CN104980289A (zh) * | 2014-04-14 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 消息推送方法、装置和*** |
CN105472400A (zh) * | 2015-12-24 | 2016-04-06 | Tcl集团股份有限公司 | 一种消息推送方法及*** |
CN105847447A (zh) * | 2016-06-01 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 消息推送方法和装置 |
WO2017101354A1 (zh) * | 2015-12-15 | 2017-06-22 | 乐视控股(北京)有限公司 | 消息推送***和方法 |
-
2018
- 2018-06-15 CN CN201810623695.7A patent/CN110611691B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120042004A1 (en) * | 2010-08-12 | 2012-02-16 | Research In Motion Limited | Plug in registration method and apparatus for push content delivery |
CN103685396A (zh) * | 2012-09-14 | 2014-03-26 | 北京神州泰岳软件股份有限公司 | 一种实现消息推送的方法和*** |
CN103747427A (zh) * | 2013-12-30 | 2014-04-23 | 华为终端有限公司 | 一种消息的推送方法和终端 |
CN104811364A (zh) * | 2014-01-24 | 2015-07-29 | 华为技术有限公司 | 一种消息的推送方法、***及消息代理服务器和终端设备 |
CN104980289A (zh) * | 2014-04-14 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 消息推送方法、装置和*** |
WO2017101354A1 (zh) * | 2015-12-15 | 2017-06-22 | 乐视控股(北京)有限公司 | 消息推送***和方法 |
CN105472400A (zh) * | 2015-12-24 | 2016-04-06 | Tcl集团股份有限公司 | 一种消息推送方法及*** |
CN105847447A (zh) * | 2016-06-01 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 消息推送方法和装置 |
Non-Patent Citations (1)
Title |
---|
姜妮: "基于MQTT物联网消息推送***", 《信号与信息处理》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917784A (zh) * | 2020-08-06 | 2020-11-10 | 湖北盈诺网络科技有限公司 | 一种不同于Web服务器应用的安全互联互通协议方法 |
CN112202781A (zh) * | 2020-09-30 | 2021-01-08 | 广东巴金斯科技有限公司 | 一种电商大数据量回执报文处理方法、装置和*** |
CN113765774A (zh) * | 2020-11-16 | 2021-12-07 | 西安京迅递供应链科技有限公司 | 消息实时同步方法、装置、电子设备及介质 |
CN112468600A (zh) * | 2021-02-02 | 2021-03-09 | 上海有孚智数云创数字科技有限公司 | 一种基于网络矩阵的应用消息通知方法、***及存储介质 |
CN112468600B (zh) * | 2021-02-02 | 2021-04-06 | 上海有孚智数云创数字科技有限公司 | 一种基于网络矩阵的应用消息通知方法、***及存储介质 |
CN112839106A (zh) * | 2021-02-25 | 2021-05-25 | 北京北信源软件股份有限公司 | 通信方法及装置、电子设备及介质 |
CN114172946A (zh) * | 2021-12-06 | 2022-03-11 | 京东科技信息技术有限公司 | 请求结果发送方法、装置、电子设备和计算机可读介质 |
CN114374697A (zh) * | 2022-01-14 | 2022-04-19 | 瀚云科技有限公司 | 道路过车信息的推送***、方法、电子设备及存储介质 |
CN114374697B (zh) * | 2022-01-14 | 2024-03-01 | 瀚云科技有限公司 | 道路过车信息的推送***、方法、电子设备及存储介质 |
CN114760296A (zh) * | 2022-03-07 | 2022-07-15 | 中银金融科技有限公司 | 信息发送方法及装置 |
CN115174512A (zh) * | 2022-05-27 | 2022-10-11 | 青岛海尔科技有限公司 | 消息推送方法及装置、存储介质及电子装置 |
CN115118773A (zh) * | 2022-06-29 | 2022-09-27 | 宁波三星智能电气有限公司 | 数据文件推送方法、服务器和计算机可读存储介质 |
CN115118773B (zh) * | 2022-06-29 | 2023-08-18 | 宁波三星智能电气有限公司 | 数据文件推送方法、服务器和计算机可读存储介质 |
CN115361442A (zh) * | 2022-10-18 | 2022-11-18 | 北京京东拓先科技有限公司 | 一种消息推送方法及装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110611691B (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110611691B (zh) | 一种消息推送方法、***及存储介质 | |
WO2018127046A1 (zh) | 一种业务请求处理方法及装置 | |
CN110012083B (zh) | 一种数据传输方法、服务器及数据传输装置 | |
CN104883217A (zh) | 一种传输卫星报文的方法、***和设备 | |
WO2006075277A1 (en) | Method and apparatus for multicast communication in wireless communication networks | |
CN111263338A (zh) | 蓝牙Mesh网络的配网方法与相关配网设备及*** | |
WO2017045433A1 (zh) | 站点间通信状态检测方法及装置、存储介质 | |
WO2017088508A1 (zh) | 一种多媒体广播多播业务处理方法、网元及*** | |
CN104955168A (zh) | 音频数据发送处理方法、接收处理方法及设备 | |
CN109963353B (zh) | 一种宽窄带融合***的呼叫重建方法及装置 | |
CN106537955B (zh) | 数据传输方法和设备 | |
KR20170081218A (ko) | 호 확립 방법 및 시스템, 그리고 사용자 장비 | |
US20160316395A1 (en) | Service query method, apparatus and system, and station | |
CN105281940B (zh) | 一种基于netconf协议的hello报文交互的方法、设备和*** | |
US10404534B2 (en) | Method and device for networking intelligent terminals | |
CN110365802B (zh) | 一种消息传输方法、消息转发设备及存储介质 | |
EP3065445B1 (en) | Method, cse, and system for transmitting m2m application request | |
CN114884805B (zh) | 数据传输方法、装置、终端及存储介质 | |
CN111385324A (zh) | 一种数据通信方法、装置、设备和存储介质 | |
CN112995095B (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN110572440B (zh) | 用于数据传输的方法及装置、家电设备、存储介质 | |
CN109962962B (zh) | 一种套接字socket连接的方法及设备 | |
CN113904860A (zh) | 数据传输方法、装置、设备、***及存储介质 | |
CN107548025B (zh) | 一种位置信息共享方法和核心网 | |
CN109921933B (zh) | 一种信息处理方法及网络安全设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |