CN115514731A - 一种消息推送方法、装置、介质及电子设备 - Google Patents
一种消息推送方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN115514731A CN115514731A CN202211156420.XA CN202211156420A CN115514731A CN 115514731 A CN115514731 A CN 115514731A CN 202211156420 A CN202211156420 A CN 202211156420A CN 115514731 A CN115514731 A CN 115514731A
- Authority
- CN
- China
- Prior art keywords
- message
- data connection
- push
- web end
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 235000014510 cooky Nutrition 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/18—Commands or executable codes
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种消息推送方法、装置、介质及电子设备。本申请中在web端与业务服务器之间断开数据连接的情况下不直接推送消息,而是将消息保存到数据库中,待相应的web端重新与业务服务器建立数据连接之后再从存储数据库中读取相应的消息推送给web端,由此避免消息无法推送到web端的情况,进而提高业务服务器向web端推送消息的可靠性。
Description
技术领域
本申请涉及计算机网络技术领域,尤其涉及一种消息推送方法、装置、介质及电子设备。
背景技术
在问答服务中,用户可以在通过登录浏览器中的web端向业务服务器发送需要解答的问题信息,业务服务器向web端发送相应的答案信息。另外,业务服务器也可以主动向web端推送相应的业务消息,如广告连接、上新提醒等消息。
但是,用户在web端退出登录后,web端与业务服务器之间的数据连接会被断开,此时,业务服务器无法向web端推送消息,即使用户重新登录web端,也不会获得到业务服务器的消息。
因此,亟需一种能够提高业务服务器向web端进行消息推送的可靠性的技术方案。
发明内容
有鉴于此,本申请提供一种消息推送方法、装置、介质及电子设备,用于提高业务服务器向web端推送消息的可靠性,如下:
一种消息推送方法,应用于业务服务器,所述方法包括:
从基于Redis的消息数据库中获得第一消息;所述第一消息由消息服务器保存到存储数据库并发布到所述消息数据库中,所述存储数据库中存储有至少一条推送消息,所述存储数据库中的所述推送消息具有第一推送标识或第二推送标识,所述第一推送标识表征其所属的推送消息已经被推送到相应的web端,所述第二推送标识表征其所属的推送消息未被推送到相应的web端;
在所述业务服务器当前建立的基于websocket的第一数据连接中,查找与所述第一消息相对应的目标连接;
在所述第一数据连接中查找到与所述第一消息相对应的目标连接的情况下,通过所述目标连接,将所述第一消息发送到所述目标连接对应的第一web端并为所述存储数据库中的所述第一消息设置所述第一推送标识;
在所述第一数据连接中没有查找到与所述第一消息相对应的目标连接的情况下,监测所述业务服务器上是否新建基于websocket的第二数据连接;
在所述业务服务器上新建基于websocket的第二数据连接的情况下,判断所述存储数据库中是否存在具有所述第二推送标识的第二消息与所述第二数据连接相对应;
在所述存储数据库中存在所述第二消息与所述第二数据连接相对应的情况下,通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端。
上述方法,优选的,所述第二消息存在多个的情况下,每个所述第二消息分别具有消息发布时间;
其中,所述通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端,包括:
按照所述消息发布时间的先后顺序,依次将每个所述第二消息通过所述第二数据连接发送到所述第二数据连接对应的第二web端。
上述方法,优选的,所述第一消息由所述消息服务器在生成后保存到所述存储数据库并发布到所述消息数据库中;
或者,所述第一消息由所述消息服务器在生成后且预设的推送条件被满足的情况下保存到所述存储数据库并发布到所述消息数据库中。
上述方法,优选的,所述推送条件包括:所述第一消息对应有预设的推送时刻,且所述消息服务器上的当前时刻与所述推送时刻相一致。
上述方法,优选的,所述业务服务器对应于所述消息数据库中的目标订阅频道,且所述目标订阅频道与所述业务服务器为所述web端提供的业务服务类型相匹配,以使得所述消息数据库通过所述目标订阅频道将其对应的推送消息发送给所有对应于所述目标订阅频道的业务服务器。
上述方法,优选的,还包括:
接收所述第一web端发送的访问请求,所述访问请求中包含有所述第一web端中存储的用户信息;所述用户信息由所述业务服务器对所述第一web端的登录用户进行登录身份认证且登录身份认证通过的情况下发送给所述第一web端;
根据所述访问请求中的用户信息对所述第一web端的登录用户进行访问身份认证,以得到访问认证结果;
在所述访问认证结果表征所述第一web端的登录用户访问身份认证通过的情况下,向所述第一web端发送所述访问请求对应的访问数据。
一种消息推送装置,应用于业务服务器,所述装置包括:
消息获得单元,用于从基于Redis的消息数据库中获得第一消息;所述第一消息由消息服务器保存到存储数据库并发布到所述消息数据库中,所述存储数据库中存储有至少一条推送消息,所述存储数据库中的所述推送消息具有第一推送标识或第二推送标识,所述第一推送标识表征其所属的推送消息已经被推送到相应的web端,所述第二推送标识表征其所属的推送消息未被推送到相应的web端;
连接查找单元,用于在所述业务服务器当前建立的基于websocket的第一数据连接中,查找与所述第一消息相对应的目标连接;在所述第一数据连接中查找到与所述第一消息相对应的目标连接的情况下,触发消息推送单元;在所述第一数据连接中没有查找到与所述第一消息相对应的目标连接的情况下,触发连接监测单元;
所述消息推送单元,用于通过所述目标连接,将所述第一消息发送到所述目标连接对应的第一web端并为所述存储数据库中的所述第一消息设置所述第一推送标识;
所述连接监测单元,用于监测所述业务服务器上是否新建基于websocket的第二数据连接;在所述业务服务器上新建基于websocket的第二数据连接的情况下,触发消息匹配单元;
所述消息匹配单元,用于判断所述存储数据库中是否存在具有所述第二推送标识的第二消息与所述第二数据连接相对应;在所述存储数据库中存在所述第二消息与所述第二数据连接相对应的情况下,触发所述消息推送单元通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端。
上述装置,优选的,所述第二消息存在多个的情况下,每个所述第二消息分别具有消息发布时间;
其中,所述通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端,包括:
按照所述消息发布时间的先后顺序,依次将每个所述第二消息通过所述第二数据连接发送到所述第二数据连接对应的第二web端。
一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时实现如前述任意一项所述的方法。
一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器运行时,使得所述一个或多个处理器实现如前述任意一项所述的方法。
从上述技术方案可以看出,本申请公开的一种消息推送方法、装置、介质及电子设备中,通过配置存储数据库,用于存储消息服务器需要推送的推送消息,并且,为存储数据库中保存的推送消息配置推送标识,以表征其所属的推送消息是否已经被推送到web端,基于此,即使业务服务器无法将当前获得到的第一消息推送到相应的web端,也可以在新建立的数据连接与存储数据库中没有被推送的第二消息相对应的情况下,将第二消息发送到新建立的数据连接对应的web端。可见,本申请中在web端与业务服务器之间断开数据连接的情况下不直接推送消息,而是将消息保存到数据库中,待相应的web端重新与业务服务器建立数据连接之后再从存储数据库中读取相应的消息推送给web端,由此避免消息无法推送到web端的情况,进而提高业务服务器向web端推送消息的可靠性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种消息推送方法的流程图;
图2为本申请实施例一提供的一种消息推送方法的部分流程图;
图3为本申请实施例二提供的一种消息推送装置的结构示意图;
图4为本申请实施例三提供的一种电子设备的结构示意图;
图5为本申请适用于银行智能客服实现消息推送的整体架构图;
图6为本申请适用于银行智能客服通过Redis发布订阅消息的架构图;
图7为本申请适用于银行智能客服实现定时消息推送的模式示例图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,为本申请实施例一提供的一种消息推送方法的实现流程图,改方法可以适用于能够提供问答服务的业务服务器,如智能客服。本实施例中的技术方案主要用于提高消息推送的可靠性。
具体的,本实施例中的方法可以包含如下步骤:
步骤101:从基于Redis的消息数据库中获得第一消息。
其中,第一消息由消息服务器保存到存储数据库并发布到消息数据库中。例如,消息服务器为基于Redis的服务器,消息数据库为基于Redis的数据库。基于此,存储数据库中存储有至少一条推送消息,而且,存储数据库中的推送消息具有第一推送标识或第二推送标识,第一推送标识表征其所属的推送消息已经被推送到相应的web端,第二推送标识表征其所属的推送消息未被推送到相应的web端。
需要说明的是,在第一消息被保存到消息数据库中时,第一消息具有的推送标识为第二推送标识。
具体实现中,存储数据库可以为Oracle的存储数据库,以实现推送消息的持久化保存。
另外,消息数据库中具有多个订阅频道,每个订阅频道对应于不同的业务服务类型,例如,问答的业务服务类型、购物的业务服务类型、金融的业务服务类型等。基于此,本实施例中为web端提供问答服务的业务服务器可以配置为服务器集群,集群中有一个或多个业务服务器,由集群中的一个业务服务器为web端提供问答服务,而集群中的每个业务服务器均对应于消息数据库中的目标订阅频道,而且,目标订阅频道与业务服务器为web端提供的业务服务类型如问答服务类型相匹配,基于此,消息数据库通过目标订阅频道将该频道对应的推送消息(与目标订阅频道对应的业务服务类型相匹配的推送消息)发送给所有对应于该目标订阅频道的业务服务器,由此,对应于该问答服务类型的推送消息能够被发送到每个提供问答服务的业务服务器。
步骤102:在业务服务器当前建立的基于websocket的第一数据连接中,查找与第一消息相对应的目标连接,在第一数据连接中查找到与第一消息相对应的目标连接的情况下,执行步骤103;在第一数据连接中没有查找到与第一消息相对应的目标连接的情况下,执行步骤104。
其中,在用户登录web端时,业务服务器所在的服务器集群中选择其中一个业务服务器建立与web端之间的基于websocket的数据连接,在用户退出web端的登录时,该web端与业务服务器之间的基于websocket的数据连接断开。本实施例中的第一数据连接是指当前的业务服务器上与web端建立的仍然处于连接状态的基于websocket的数据连接。
基于此,业务服务器在获得到第一消息之后,可以在自己的第一数据连接中查找是否有与第一消息相对应的第一数据连接,例如,查找是否有与第一消息中的消息标识相匹配的第一数据连接,这里的消息标识可以为用户标识(登录用户),基于此,如果有第一数据连接对应的web端登录用户与第一消息中的用户标识相一致,那么可以确定该第一数据连接即为与第一消息相对应的目标连接。
步骤103:通过目标连接,将第一消息发送到目标连接对应的第一web端并为存储数据库中的第一消息设置第一推送标识。
其中,业务服务器在查找到与第一消息对应的目标连接之后,将第一消息通过该目标连接发送到对端的第一web端上,由此实现第一消息的推送,另外,业务服务器在推送第一消息完成的情况下,对存储数据库中的第一消息的推送标识设置为第一推送标识,以表征存储数据库中的这个第一消息已经被推送完成。
步骤104:监测业务服务器上是否新建基于websocket的第二数据连接,在业务服务器上新建基于websocket的第二数据连接的情况下,执行步骤105。
其中,业务服务器在没有查找到与第一消息对应的第一数据连接的情况下,表明需要推送该第一消息到达的web端上用户已经退出登录,即基于websocket的数据连接已经被断开,此时,业务服务器为了实现消息的推送,可以监测是否有新建的第二数据连接,例如,是否有用户登录web端进而建立新的基于websocket的数据连接,进而在有新建的第二数据连接的情况下,执行步骤105。
步骤105:判断存储数据库中是否存在具有第二推送标识的第二消息与第二数据连接相对应;在存储数据库中存在第二消息与第二数据连接相对应的情况下,执行步骤106。
也就是说,业务服务器在监测到有新建的第二数据连接后,可以查看存储数据库中未被推送的第二消息是否与这个新建的第二数据连接相匹配,例如查看这个新建的第二数据连接对应的web端所登录的用户是否与未被推送的第二消息的用户标识相匹配,如果相匹配,那么说明是第二消息中的用户标识对应的用户再次登录web端,以重新建立业务服务器与web端之间的基于websocket的数据连接,此时,可以执行步骤106。
步骤106:通过第二数据连接,将第二消息发送到第二数据连接对应的第二web端。
需要说明的是,第二消息可以为具有第二推送标识的第一消息,由此,本实施例中在业务服务器上可以在用户退出登录web端时暂不推送消息而是在用户重新登录web端后将消息进行推送。
从上述技术方案可以看出,本申请实施例一提供的一种消息推送方法中,通过配置存储数据库,用于存储消息服务器需要推送的推送消息,并且,为存储数据库中保存的推送消息配置推送标识,以表征其所属的推送消息是否已经被推送到web端,基于此,即使业务服务器无法将当前获得到的第一消息推送到相应的web端,也可以在新建立的数据连接与存储数据库中没有被推送的第二消息相对应的情况下,将第二消息发送到新建立的数据连接对应的web端。可见,本申请中在web端与业务服务器之间断开数据连接的情况下不直接推送消息,而是将消息保存到数据库中,待相应的web端重新与业务服务器建立数据连接之后再从存储数据库中读取相应的消息推送给web端,由此避免消息无法推送到web端的情况,进而提高业务服务器向web端推送消息的可靠性。
在一种实现方式中,存储数据库中的推送消息分别具有消息发布时间,消息发布时间为其所属推送消息被消息服务器发布到消息数据库的时间,以此表征推送消息被发布的前后顺序,也就是需要被推送的前后顺序。基于此,在存储数据中存在多个具有第二推送标识的第二消息与第二数据连接相对应时,本实施例中在步骤106中可以按照消息发布时间的先后顺序,依次将每个第二消息通过第二数据连接发送到第二数据连接对应的第二web端,也就是说,按照每个第二消息被发布到消息数据库的时间前后顺序依次发送这些第二消息到第二web端。
在一种实现方式中,第一消息由消息服务器在接收到业务方在消息定制界面上进行消息定制操作的情况下根据消息定制操作中的消息内容生成,基于此,第一消息可以由消息服务器在生成后就保存到存储数据库并发布到消息数据库中,或者,第一消息可以由消息服务器在生成后且预设的推送条件被满足的情况下再保存到存储数据库并发布到消息数据库中。
例如,推送条件可以为:第一消息对应有预设的推送时刻,且消息服务器上的当前时刻与推送时刻相一致。例如,第一消息被设置有推送时刻8月2日10点整,基于此,在消息服务器上的当前时刻到达8月2日10点整时,将第一消息保存到存储数据库并发布到消息数据库中,进而业务服务器就可以通过目标订阅频道获得到第一消息并将第一消息推送到相应的第一web端。可见,本实施例中基于推送条件的设置,可以实现消息的定时推送。
需要说明的是,这些第一消息可以存储到MySQL的存储数据库中。
再如,推送条件可以为:消息服务器上接收到存储数据库发送的推送空闲信息,推送空闲信息表征存储数据库中的推送消息均具有第一推送标识。也就是说,存储数据库中的推送消息都已经被推送到相应的web端,已经没有任何消息处于待推送的状态,此时,存储数据库向消息服务器发送推送空闲信息,以指示消息服务器可以将其上生成的但未发布的推送消息保存到存储数据库并发布到消息数据库,由此使得业务服务器可以继续从消息数据库中获取推送消息并推送到相应的web端。可见,本申请中基于推送条件的设置可以提高资源利用率,避免业务服务器过度空闲。
在一种实现方式中,本实施例中的业务服务器对应于消息数据库中的目标订阅频道,该目标订阅频道与业务服务器为web端提供的业务服务类型相匹配,以使得消息数据库通过目标订阅频道将其对应的推送消息发送给所有对应于目标订阅频道的业务服务器,由此,与web端建立有基于websocket的数据连接的业务服务器肯定能够从消息数据库获得到推送消息,进而该业务服务器就可以将从消息数据库得到的推送消息推送到web端,避免获得到推送消息的业务服务器与建立有数据连接的业务服务器不一致导致的消息漏发的情况。
在一种实现方式中,本实施例中的方法还可以包含如下步骤,如图2中所示:
步骤107:接收第一web端发送的访问请求。
其中,访问请求中包含有第一web端中存储的用户信息。这里的用户信息由业务服务器对第一web端的登录用户进行登录身份认证且登录身份认证通过的情况下发送给第一web端。
具体的,用户信息可以包含有第一web端的登录用户的用户名和密码以及登录身份认证通过的标识信息,或者,用户信息可以包含其他表征第一web端的登录用户的身份认证的信息内容。
例如,用户信息可以为保存在第一web端中的cookie信息。
步骤108:根据访问请求中的用户信息对第一web端的登录用户进行访问身份认证,以得到访问认证结果,在访问认证结果表征第一web端的登录用户访问身份认证通过的情况下,执行步骤109。
例如,本实施例中使用访问请求中携带的第一web端中的cookie信息对第一web端的登录用户进行访问身份认证,所得到的访问认证结果表征该用户是否具有合法的访问权限,如果该用户具有合法的访问权限,那么执行步骤109。
步骤109:向第一web端发送所述访问请求对应的访问数据。
其中,业务服务器可以根据访问请求中的访问标识获取相应的访问数据,进而将访问数据通过第一web端对应的第一数据连接发送给第一web端。
例如,在第一web端的用户登录后,第一web端建立与业务服务器之间的第一数据连接,并且,业务服务器将登录身份认证通过的用户信息发送给第一web端,由第一web端以cookie信息的形式保存,基于此,在业务服务器向第一web端推送上新链接的消息之后,第一web端的用户点击上新链接,以生成上新产品的访问请求,该访问请求中包含有第一web端的登录用户的用户信息,并将访问请求发送给业务服务器,业务服务器通过访问请求中的cookie信息对第一web端的登录用户再次进行身份认证,在身份认证通过的情况下,业务服务器将上新产品的产品页面链接发送给第一web端。
参考图3,为本申请实施例二提供的一种消息推送装置的结构示意图,该装置可以应用能够为web端提供问答服务的业务服务器中。本实施例中的技术方案主要用于提高消息推送的可靠性。
具体的,本实施例中的装置可以包含如下单元:
消息获得单元301,用于从基于Redis的消息数据库中获得第一消息;所述第一消息由消息服务器保存到存储数据库并发布到所述消息数据库中,所述存储数据库中存储有至少一条推送消息,所述存储数据库中的所述推送消息具有第一推送标识或第二推送标识,所述第一推送标识表征其所属的推送消息已经被推送到相应的web端,所述第二推送标识表征其所属的推送消息未被推送到相应的web端;
连接查找单元302,用于在所述业务服务器当前建立的基于websocket的第一数据连接中,查找与所述第一消息相对应的目标连接;在所述第一数据连接中查找到与所述第一消息相对应的目标连接的情况下,触发消息推送单元303;在所述第一数据连接中没有查找到与所述第一消息相对应的目标连接的情况下,触发连接监测单元304;
所述消息推送单元303,用于通过所述目标连接,将所述第一消息发送到所述目标连接对应的第一web端并为所述存储数据库中的所述第一消息设置所述第一推送标识;
所述连接监测单元304,用于监测所述业务服务器上是否新建基于websocket的第二数据连接;在所述业务服务器上新建基于websocket的第二数据连接的情况下,触发消息匹配单元305;
所述消息匹配单元305,用于判断所述存储数据库中是否存在具有所述第二推送标识的第二消息与所述第二数据连接相对应;在所述存储数据库中存在所述第二消息与所述第二数据连接相对应的情况下,触发所述消息推送单元303通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端。
从上述技术方案可以看出,本申请实施例二提供的一种消息推送装置中,通过配置存储数据库,用于存储消息服务器需要推送的推送消息,并且,为存储数据库中保存的推送消息配置推送标识,以表征其所属的推送消息是否已经被推送到web端,基于此,即使业务服务器无法将当前获得到的第一消息推送到相应的web端,也可以在新建立的数据连接与存储数据库中没有被推送的第二消息相对应的情况下,将第二消息发送到新建立的数据连接对应的web端。可见,本申请中在web端与业务服务器之间断开数据连接的情况下不直接推送消息,而是将消息保存到数据库中,待相应的web端重新与业务服务器建立数据连接之后再从存储数据库中读取相应的消息推送给web端,由此避免消息无法推送到web端的情况,进而提高业务服务器向web端推送消息的可靠性。
在一种实现方式中,所述第二消息存在多个的情况下,每个所述第二消息分别具有消息发布时间;
其中,消息推送单元303在通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端时,具体用于:按照所述消息发布时间的先后顺序,依次将每个所述第二消息通过所述第二数据连接发送到所述第二数据连接对应的第二web端。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
参考图4,为本申请实施例三提供的一种电子设备的结构示意图,该电子设备为提供问答服务的业务服务器,具体的,业务服务器可以包含如下结构:
一个或多个处理器401;
存储装置402,其上存储有一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器运行时,使得所述一个或多个处理器实现如前文实施例中所述的消息推送方法。
本申请实施例还提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时实现如前文中实施例所述的消息推送方法。
本申请实施例还提供了一种处理器,该处理器用于运行程序,其中,该程序运行时实现以上各方法实施例描述的消息推送方法。
本申请实施例还提供了一种计算机程序产品,当在数据处理设备上执行时,使得数据处理设备实现以上各方法实施例描述的消息推送方法。
以业务服务器为银行智能客服的服务器为例,为了提高业务服务器向web端推送消息的可靠性,本申请中提出一种基于websocket的问答客服定向定时推送方案,参考图5中所示的整体架构图,总体方案如下:
在OCP(OpenShift Container Platform)云上服务器(业务服务器)的集群声明web端(web客户端)可用于建立websocket双工通信的接口,并采用基于浏览器cookie的用户身份验证机制。而在用户身份验证通过后,云上集群将对应的用户身份信息、会话信息保存在相应的服务器中,并订阅(Subscribe)Redis(Remote Dictionary Server)集群相应的频道,待收到指定Redis频道发布(Publish)的消息后拾起对应的websocket会话将消息推送给指定的用户。为适配云上多集群服务,可以采用Nginx消息中间件实现用户消息的转发。业务方面,构建问答客服消息中心供各业务需求方使用,消息中心提供在线消息推送、离线消息推送、定时消息发送等多种业务场景,通过Redis频道发布相应的消息,实现业务方消息的可靠推送。例如,每个用户分别登录相应的web客户端A、B、C,业务方在消息定制界面定制消息后将消息通知到消息中心(消息服务器),之后,消息服务器将这些推送消息发布到消息数据库(Redis数据库集群)中并保存到相应的存储数据库(MySQL数据库和Oracle数据库)中,由此,云上服务器集群中的各个业务服务器Cluster通过订阅的频道获取到Redis数据库中的推送消息,业务服务器再利用Nginx中间件将推送消息推送到相应的web客户端。
以下分别对用户身份安全认证、消息漏发问题解决、离线消息推送、消息定时推送和在线提醒的方案进行说明:
(1)用户身份安全认证:
为提升websocket消息推送的安全性,提出一种基于web浏览器cookie的身份认证机制。用户在通过用户名密码安全登陆后,携带指定的的cookie请求建立websocket通信。本申请提供两种拦截器对用户cookie进行验证,一种身份拦截器用于对用户登录信息进行安全性认证后放行,另一种业务拦截器用于将用户身份标识、相关业务信息保存到相应的会话中。
(2)消息漏发问题解决:
本申请采用OCP云上多集群部署方式,使用Nginx实现用户请求的转发,因此用户websocket会话被保存在随机的云上集群中。本申请采用Redis发布/订阅(Sub/Pub)的消息模式实现消息的发布:各集群订阅Redis指定频道,消息中心通过往Redis指定频道发送消息的方式,实现消息推送的多集群全面覆盖。相应的消息传递方式可以参考图6中Redis发布订阅消息的架构图所示。
例如,场景A、B、C、D下的消息A、B、C、D被发布到Redis数据库集群中,相应的各个业务服务器集群Sever1和Sever2通过订阅Redis的指定频道获得到相应的消息A、B、C、D,最后,用户A、B、C、D分别经过cookie的身份认证后获得到Sever推送的相应消息,进而不会出现消息漏发的问题。
(3)离线消息推送:
Web端用户并不总是处于在线的状态,而问答客服的websocket消息推送需要建立在用户在线的基础之上,因此消息推送常常受阻。为解决上述问题,本申请设计一种保证消息推送可靠性的模式:问答客服在用户离线状态需要向用户推送的消息,并不直接推送,而是通过消息持久化的方式保存在Oracle数据库中,待用户下次登录,扫描相应的离线消息表(具有第二推送标识的推送消息),按照发布时间的前后顺序依次推送给web端的用户。相应的离线消息表结构如表1所示。
表1离线消息表
MESSAGEID | USERID | CONTENT | CREATETIME | PUBLISHTIME | PUSHID |
消息Id | 用户Id | 消息内容 | 推送时间 | 发布时间 | 第二推送标识 |
(4)消息定时推送:
本申请设计一种问答客服定时推送消息的模式,用于满足消息整点推送、定时提醒等业务场景。业务方基于Cronb表达式在消息中心配置整点推送、定时推送的消息,消息中心基于Java定时器生成定时作业,并按照时间序列将制定消息依照时间节点发布到Redis指定频道。云上集群收到Redis发布的消息,先判断用户当前在线状态,若用户在线则直接推送消息;若用户离线,则将定时消息转离线消息,待用户登录时完成推送。定时消息推送的设计模式如图7所示。例如,场景A和B下的消息A、B在定时器的计时到达的情况下,发布到Redis数据库集群中,相应的各个业务服务器集群Sever通过订阅Redis的指定频道获得到相应的消息A、B,并判断消息A和B对应的socket连接是否存在,如果存在则直接推送给web端用户,如果不存在则转为离线消息保存在Oracle数据库中,例如,消息A对应的web端用户在线,此时,将消息A推送到web端上,以提供给用户A;再如,消息B对应的web端用户不在线,此时,将消息B转为离线消息保存在Oracle数据库中,在该用户再次登录web端即重新在线时,建立该websocket连接的业务服务器将Oracle数据库中的消息B推送到web端上,以提供给用户B。
(5)在线提醒:
本申请在web端消息提醒方面,可以基于CSS3(Cascading Style Sheets Level 3层叠样式表)实现两种效果。一是问答客服在收到推送消息时,会按照预置的CSS3动画进行头像的抖动效果,以提醒用户收到推送消息。二是基于JaveScript实现未读消息“+1”功能,并在客服头像上绑定click事件,在用户点击头像阅读推送消息时,将未读消息数目重置。
综上,本申请提出一种基于websocket的Web端问答客服消息定向定时推送方案,填补了浏览器Web端问答客服消息推送的空白,并在方案中实现了离线消息推送、定时消息推送的功能,重点解决了Web端用户离线后消息推送的可靠性问题,丰富了Web端问答客服消息交互的模式,使得消息中心上新提醒、告警通知、消息发布等功能的渠道得以健全。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种消息推送方法,其特征在于,应用于业务服务器,所述方法包括:
从基于Redis的消息数据库中获得第一消息;所述第一消息由消息服务器保存到存储数据库并发布到所述消息数据库中,所述存储数据库中存储有至少一条推送消息,所述存储数据库中的所述推送消息具有第一推送标识或第二推送标识,所述第一推送标识表征其所属的推送消息已经被推送到相应的web端,所述第二推送标识表征其所属的推送消息未被推送到相应的web端;
在所述业务服务器当前建立的基于websocket的第一数据连接中,查找与所述第一消息相对应的目标连接;
在所述第一数据连接中查找到与所述第一消息相对应的目标连接的情况下,通过所述目标连接,将所述第一消息发送到所述目标连接对应的第一web端并为所述存储数据库中的所述第一消息设置所述第一推送标识;
在所述第一数据连接中没有查找到与所述第一消息相对应的目标连接的情况下,监测所述业务服务器上是否新建基于websocket的第二数据连接;
在所述业务服务器上新建基于websocket的第二数据连接的情况下,判断所述存储数据库中是否存在具有所述第二推送标识的第二消息与所述第二数据连接相对应;
在所述存储数据库中存在所述第二消息与所述第二数据连接相对应的情况下,通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端。
2.根据权利要求1所述的方法,其特征在于,所述第二消息存在多个的情况下,每个所述第二消息分别具有消息发布时间;
其中,所述通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端,包括:
按照所述消息发布时间的先后顺序,依次将每个所述第二消息通过所述第二数据连接发送到所述第二数据连接对应的第二web端。
3.根据权利要求1或2所述的方法,其特征在于,所述第一消息由所述消息服务器在生成后保存到所述存储数据库并发布到所述消息数据库中;
或者,所述第一消息由所述消息服务器在生成后且预设的推送条件被满足的情况下保存到所述存储数据库并发布到所述消息数据库中。
4.根据权利要求3所述的方法,其特征在于,所述推送条件包括:所述第一消息对应有预设的推送时刻,且所述消息服务器上的当前时刻与所述推送时刻相一致。
5.根据权利要求1或2所述的方法,其特征在于,所述业务服务器对应于所述消息数据库中的目标订阅频道,且所述目标订阅频道与所述业务服务器为所述web端提供的业务服务类型相匹配,以使得所述消息数据库通过所述目标订阅频道将其对应的推送消息发送给所有对应于所述目标订阅频道的业务服务器。
6.根据权利要求1或2所述的方法,其特征在于,还包括:
接收所述第一web端发送的访问请求,所述访问请求中包含有所述第一web端中存储的用户信息;所述用户信息由所述业务服务器对所述第一web端的登录用户进行登录身份认证且登录身份认证通过的情况下发送给所述第一web端;
根据所述访问请求中的用户信息对所述第一web端的登录用户进行访问身份认证,以得到访问认证结果;
在所述访问认证结果表征所述第一web端的登录用户访问身份认证通过的情况下,向所述第一web端发送所述访问请求对应的访问数据。
7.一种消息推送装置,其特征在于,应用于业务服务器,所述装置包括:
消息获得单元,用于从基于Redis的消息数据库中获得第一消息;所述第一消息由消息服务器保存到存储数据库并发布到所述消息数据库中,所述存储数据库中存储有至少一条推送消息,所述存储数据库中的所述推送消息具有第一推送标识或第二推送标识,所述第一推送标识表征其所属的推送消息已经被推送到相应的web端,所述第二推送标识表征其所属的推送消息未被推送到相应的web端;
连接查找单元,用于在所述业务服务器当前建立的基于websocket的第一数据连接中,查找与所述第一消息相对应的目标连接;在所述第一数据连接中查找到与所述第一消息相对应的目标连接的情况下,触发消息推送单元;在所述第一数据连接中没有查找到与所述第一消息相对应的目标连接的情况下,触发连接监测单元;
所述消息推送单元,用于通过所述目标连接,将所述第一消息发送到所述目标连接对应的第一web端并为所述存储数据库中的所述第一消息设置所述第一推送标识;
所述连接监测单元,用于监测所述业务服务器上是否新建基于websocket的第二数据连接;在所述业务服务器上新建基于websocket的第二数据连接的情况下,触发消息匹配单元;
所述消息匹配单元,用于判断所述存储数据库中是否存在具有所述第二推送标识的第二消息与所述第二数据连接相对应;在所述存储数据库中存在所述第二消息与所述第二数据连接相对应的情况下,触发所述消息推送单元通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端。
8.根据权利要求7所述的装置,其特征在于,所述第二消息存在多个的情况下,每个所述第二消息分别具有消息发布时间;
其中,所述通过所述第二数据连接,将所述第二消息发送到所述第二数据连接对应的第二web端,包括:
按照所述消息发布时间的先后顺序,依次将每个所述第二消息通过所述第二数据连接发送到所述第二数据连接对应的第二web端。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时实现如权利要求1-6中任意一项所述的方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器运行时,使得所述一个或多个处理器实现如权利要求1-6中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211156420.XA CN115514731B (zh) | 2022-09-22 | 2022-09-22 | 一种消息推送方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211156420.XA CN115514731B (zh) | 2022-09-22 | 2022-09-22 | 一种消息推送方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115514731A true CN115514731A (zh) | 2022-12-23 |
CN115514731B CN115514731B (zh) | 2024-09-17 |
Family
ID=84506402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211156420.XA Active CN115514731B (zh) | 2022-09-22 | 2022-09-22 | 一种消息推送方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115514731B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103368992A (zh) * | 2012-03-28 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种信息推送方法及装置 |
CN104767775A (zh) * | 2014-01-06 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 网页应用消息推送方法及系统 |
CN107451831A (zh) * | 2016-05-30 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 任务推送方法 |
CN108011937A (zh) * | 2017-11-29 | 2018-05-08 | 努比亚技术有限公司 | 消息推送方法、服务器、智能终端及计算机可读存储介质 |
CN108390881A (zh) * | 2018-02-27 | 2018-08-10 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN111917843A (zh) * | 2020-07-16 | 2020-11-10 | 远光软件股份有限公司 | 消息的推送方法、计算机设备及存储介质 |
CN112511580A (zh) * | 2019-09-16 | 2021-03-16 | 北京国双科技有限公司 | 消息推送的方法、装置、存储介质和设备 |
CN112612985A (zh) * | 2020-12-24 | 2021-04-06 | 广州致远电子有限公司 | 基于WebSocket的多用户和多类型消息的推送系统及方法 |
CN112787906A (zh) * | 2019-11-08 | 2021-05-11 | 内江市下一代互联网数据处理技术研究所 | 一种基于云桌面平台的消息推送系统 |
CN113157466A (zh) * | 2021-04-27 | 2021-07-23 | 上海销氪信息科技有限公司 | 一种消息推送方法、装置、系统、电子设备和存储介质 |
CN113867958A (zh) * | 2021-09-29 | 2021-12-31 | 浪潮通用软件有限公司 | 一种任务角标推送的方法、装置、设备及可读介质 |
-
2022
- 2022-09-22 CN CN202211156420.XA patent/CN115514731B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103368992A (zh) * | 2012-03-28 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种信息推送方法及装置 |
CN104767775A (zh) * | 2014-01-06 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 网页应用消息推送方法及系统 |
CN107451831A (zh) * | 2016-05-30 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 任务推送方法 |
CN108011937A (zh) * | 2017-11-29 | 2018-05-08 | 努比亚技术有限公司 | 消息推送方法、服务器、智能终端及计算机可读存储介质 |
CN108390881A (zh) * | 2018-02-27 | 2018-08-10 | 北京焦点新干线信息技术有限公司 | 一种分布式高并发实时消息推送方法及系统 |
CN112511580A (zh) * | 2019-09-16 | 2021-03-16 | 北京国双科技有限公司 | 消息推送的方法、装置、存储介质和设备 |
CN112787906A (zh) * | 2019-11-08 | 2021-05-11 | 内江市下一代互联网数据处理技术研究所 | 一种基于云桌面平台的消息推送系统 |
CN111917843A (zh) * | 2020-07-16 | 2020-11-10 | 远光软件股份有限公司 | 消息的推送方法、计算机设备及存储介质 |
CN112612985A (zh) * | 2020-12-24 | 2021-04-06 | 广州致远电子有限公司 | 基于WebSocket的多用户和多类型消息的推送系统及方法 |
CN113157466A (zh) * | 2021-04-27 | 2021-07-23 | 上海销氪信息科技有限公司 | 一种消息推送方法、装置、系统、电子设备和存储介质 |
CN113867958A (zh) * | 2021-09-29 | 2021-12-31 | 浪潮通用软件有限公司 | 一种任务角标推送的方法、装置、设备及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115514731B (zh) | 2024-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108184140B (zh) | 一种直播连麦方法、服务器、存储介质及计算机设备 | |
KR101662352B1 (ko) | 네트워크 환경에서 비-지속성 메시지의 다중 큐를 관리하기 위한 시스템 및 방법 | |
US9578081B2 (en) | System and method for providing an actively invalidated client-side network resource cache | |
CN101263483B (zh) | 与多个进程共享端口 | |
US9425973B2 (en) | Resource-based synchronization between endpoints in a web-based real time collaboration | |
US20140372516A1 (en) | System and method for providing a scalable translation between polling-based clients and connection-based message queues | |
US10404631B2 (en) | Creating groups in a messaging system | |
US20120059887A1 (en) | Instant Messaging | |
JP2014532213A (ja) | ネットワークリソースダウンロード情報の共有制御システムと方法 | |
CN114024972B (zh) | 一种长连接通信方法、系统、装置、设备及存储介质 | |
CN114338063B (zh) | 消息队列系统、业务处理方法及计算机可读存储介质 | |
Xu et al. | Scaling microblogging services with divergent traffic demands | |
JP2015522879A (ja) | オフラインメッセージを提供するサービス装置、方法及び記憶媒体 | |
CN110971506B (zh) | 一种去中心化实时集群通讯方法、装置、设备及系统 | |
CN106411713B (zh) | 一种状态通知方法及服务器 | |
De Araujo et al. | A publish/subscribe system using causal broadcast over dynamically built spanning trees | |
CN115514731B (zh) | 一种消息推送方法、装置、介质及电子设备 | |
CN109104472B (zh) | 区块链网络组网方法、装置、设备及计算机可读存储介质 | |
CN105323270B (zh) | 网络信息推送方法和系统 | |
CN114025005B (zh) | 一种数据通讯方法、系统、电子设备及存储介质 | |
CN108377217A (zh) | 一种实时通信方法和装置 | |
CN108471375B (zh) | 一种消息处理方法、装置及终端 | |
CN101610160A (zh) | 一种选择用户终端发布广告信息的控制装置及方法 | |
CN110740151A (zh) | 一种微服务调整方法、装置、服务器及计算机存储介质 | |
CN109905448A (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 |