一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于WebSocket的消息推送方法、设备、服务器及存储介质与流程

2022-02-22 22:21:07 来源:中国专利 TAG:
基于WebSocket的消息推送方法、设备、服务器及存储介质与流程

本发明涉及通信技术领域,尤其涉及一种基于WebSocket的消息推送方法、设备、服务器及存储介质。

背景技术

随着物联网技术不断发展演进,越来越多的硬件设备接入网络,由此也产生了海量的数据。基于这些数据的实时数据分析展示系统需要快速地将不断涌入的海量数据清洗、统计并准确无误地分发至各种数据大屏和前端报表中。

现有技术中,通过在客户端标识信息存储至Redis缓存,利用Redis消息队列发布、接收Topic消息,根据消息中的标识信息判断该用户对应的session是否存在于本地,如果存在,直接从内存中取出对应的session,并将消息发送至该session对应的客户端,如果不存在,从Redis缓存中,根据用户id查询该服务器IP及该用户对应的session id,用HTTP请求发送该用户id、session id和Topic消息至该服务器。但是,由于使用Redis作为缓存消息队列,而Redis是基于内存的缓存中间件,数据存储容量较低、数据可靠性较低。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种基于WebSocket的消息推送方法、设备、服务器及存储介质,旨在解决采用Redis作为缓存消息队列而导致数据存储容量低以及数据可靠性低的技术问题。

为实现上述目的,本发明提供一种基于WebSocket的消息推送方法,所述基于WebSocket的消息推送方法包括以下步骤:

在接收到第一用户终端发送的订阅请求时,WebSocket服务器中的第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存;

在获取到Kafka消息队列中的待消费事件时,WebSocket服务器中的第二WebSocket服务器获取所述待消费事件对应的目标接口信息;

所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述接口信息匹配的目标WebSocket服务器;

所述第二WebSocket服务器发送所述待消费事件对应的推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端。

进一步地,所述关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存的步骤包括:

所述第一WebSocket服务器在所述Redis缓存中存储第一数据,其中,所述第一数据的第一key为所述第一接口信息,所述第一数据的第一Set数据为所述第一sessionID以及所述第一服务器IP地址;

所述第一WebSocket服务器在所述Redis缓存中存储第二数据,其中,第二数据的第二key为所述第一sessionID以及所述第一服务器IP地址,所述第二数据的第二Set数据为所述第一接口信息。

进一步地,所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述接口信息匹配的目标WebSocket服务器的步骤包括:

所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,获得所述目标接口信息对应的目标服务器IP地址;

所述第二WebSocket服务器将WebSocket服务器中目标服务器IP地址对应的WebSocket服务器作为所述目标WebSocket服务器。

进一步地,所述第二WebSocket服务器发送所述待消费事件对应的推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端的步骤包括:

所述第二WebSocket服务器获取所述目标接口信息对应的目标sessionID;

所述第二WebSocket服务器基于所述待消费事件以及所述目标sessionID发送推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标sessionID对应的目标用户终端。

进一步地,所述基于WebSocket的消息推送方法还包括:

在检测到第二用户终端对应的断开连接请求时,WebSocket服务器中的第三WebSocket服务器获取所述断开连接请求对应的第二sessionID以及第二服务器IP地址;

所述第三WebSocket服务器基于所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中获取对应的第二接口信息;

所述第三WebSocket服务器基于所述第二接口信息、所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中删除对应的目标数据。

进一步地,所述第三WebSocket服务器基于所述第二接口信息、所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中删除对应的目标数据的步骤包括:

所述第三WebSocket服务器发送所述第二接口信息、所述第二sessionID以及第二服务器IP地址对应的数据删除指令至所述Redis缓存,其中,所述Redis缓存基于所述数据删除指令删除所述第二接口信息、所述第二sessionID以及第二服务器IP地址对应的第一目标数据以及第二目标数据。

进一步地,所述在接收到第一用户终端发送的订阅请求时,WebSocket服务器中的第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址的步骤包括:

在接收到第一用户终端发送的订阅请求时,所述第一WebSocket服务器对所述第一用户终端进行权限验证;

在第一用户终端权限验证通过时,所述第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址。

此外,为实现上述目的,本发明还提供一种服务器,所述服务器包括:第一WebSocket服务器、第二WebSocket服务器以及目标WebSocket服务器,其中,

所述第一WebSocket服务器包括:

第一获取模块,用于在接收到第一用户终端发送的订阅请求时,获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存;

所述第二WebSocket服务器包括:

第二获取模块,用于在获取到Kafka消息队列中的待消费事件时,获取所述待消费事件对应的目标接口信息;

查询模块,用于基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述接口信息匹配的目标WebSocket服务器;

第一发送模块,用于发送所述待消费事件对应的推送请求至所述目标WebSocket服务器;

所述目标WebSocket服务器包括:

第二发送模块,用于推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端。

此外,为实现上述目的,本发明还提供一种基于WebSocket的消息推送设备,所述基于WebSocket的消息推送设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于WebSocket的消息推送程序,所述基于WebSocket的消息推送程序被所述处理器执行时实现前述的基于WebSocket的消息推送方法的步骤。

此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有基于WebSocket的消息推送程序,所述基于WebSocket的消息推送程序被处理器执行时实现前述的基于WebSocket的消息推送方法的步骤。

本发明通过在接收到第一用户终端发送的订阅请求时,WebSocket服务器中的第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存;接着在获取到Kafka消息队列中的待消费事件时,WebSocket服务器中的第二WebSocket服务器获取所述待消费事件对应的目标接口信息;而后所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述目标接口信息匹配的目标WebSocket服务器;然后所述第二WebSocket服务器发送所述待消费事件对应的推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端,通过采用以磁盘存储的Kafka作为消息中间件,能够避免海量数据存储问题以及扩容成本问题,提高了数据存储容量以及数据可靠性,同时由于磁盘空间充足,能够利用Kafka数据副本机制进行多重备份,保障了数据安全性。

同时,使用多台WebSocket服务器(第二WebSocket服务器)作为消息广播服务器,避免了服务器单点故障,并且系统能够通过增加服务器随时方便地进行横向扩容、提升系统数据处理能力。并且,在Redis缓存中存储sessionID、WebSocket服务器的服务器IP地址以及接口信息,在消费Kafka数据时,仅在有订阅者(sessionID)的服务器进行消息广播,极大减少了消息广播前数据处理的次数,极大节省了系统开销。

附图说明

图1是本发明实施例方案涉及的硬件运行环境中基于WebSocket的消息推送设备的结构示意图;

图2为本发明基于WebSocket的消息推送方法第一实施例的流程示意图;

图3为本发明WebSocket服务器一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境中基于WebSocket的消息推送设备的结构示意图。

本发明实施例基于WebSocket的消息推送设备可以是PC。如图1所示,该基于WebSocket的消息推送设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,基于WebSocket的消息推送设备还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。当然,基于WebSocket的消息推送设备还可配置气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的终端结构并不构成对基于WebSocket的消息推送设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于WebSocket的消息推送程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于WebSocket的消息推送程序。

在本实施例中,基于WebSocket的消息推送设备包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的基于WebSocket的消息推送程序,其中,处理器1001调用存储器1005中存储的基于WebSocket的消息推送程序时,并执行以下各个实施例中基于WebSocket的消息推送方法的步骤。

本发明还提供一种基于WebSocket的消息推送方法,参照图2,图2为本发明基于WebSocket的消息推送方法第一实施例的流程示意图。

本实施例中,该基于WebSocket的消息推送方法包括以下步骤:

步骤S101,在接收到第一用户终端发送的订阅请求时,WebSocket服务器中的第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存;

本实施例中,设有多台分布式WebSocket服务器,后台启动多台WebSocket服务器后,用户可通过第一用户终端随机与其中一台WebSocket服务器建立连接。设备终端将设备事件或设备状态通过Http接口上报至Kafka消息生产者,Kafka消息生产者将数据上传至Kafka消息队列中,具体地,在接收到设备终端发送的设备事件或设备状态对应的设备数据时,Kafka消息生产者生成所述设备数据对应的待消费事件,并将所述设备数据对应的待消费事件上传至所述至Kafka消息队列。同时,移动终端(例如安装有对应APP的手机)记录用户点击、查询、购买、绑定设备等用户行为数据,将用户行为数据上报至业务模块,业务模块按照用户行为数据产生一个或多个待消费事件(用户行为数据对应的待消费事件),并上传至Kafka消息队列中。

本实施例中,用户可用户名密码等方式在第一用户终端进行登录并与任一WebSocket服务器(例如,WebSocket服务器中的第一WebSocket服务器)建立长连接,用户通过第一用户终端显示的界面选择订阅指定接口的数据,并通过第一用户终端发送订阅请求。

本实施例中,在接收到第一用户终端发送的订阅请求时,第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存。其中,第一sessionID为第一用户终端对应的终端信息(例如账户信息),第一接口信息为第一用户终端所订阅的订阅接口的信息,第一服务器IP地址为第一WebSocket服务器的IP地址。

具体地,一实施例中,该步骤S101包括:

步骤a,所述第一WebSocket服务器在所述Redis缓存中存储第一数据,其中,所述第一数据的第一key为所述接口信息,所述第一数据的第一Set数据为所述sessionID以及所述第一服务器IP地址;

步骤b,所述第一WebSocket服务器在所述Redis缓存中存储第二数据,其中,第二数据的第二key为所述sessionID以及所述第一服务器IP地址,所述第二数据的第二Set数据为所述接口信息。

本实施例中,Redis缓存所存储的接口信息、sessionID以及服务器IP地址包括两个数据项即第一数据以及第二数据,其中,第一数据的第一key为所述第一接口信息,第一数据的第一Set数据为所述第一sessionID以及所述第一服务器IP地址,第二数据的第二key为所述第一sessionID以及所述第一服务器IP地址,所述第二数据的第二Set数据为所述第一接口信息,以便于后续消息的推送。

步骤S102,在获取到Kafka消息队列中的待消费事件时,WebSocket服务器中的第二WebSocket服务器获取所述待消费事件对应的目标接口信息;

本实施例中,WebSocket服务器为Kafka消息队列的消费者,WebSocket服务器启动后同时监听Kafka消息队列中各个Topic的数据(待消费事件)。并且,由于Kafka消息队列的区域属性,对于每一个待消费事件,Kafka消息队列仅能够向有限个WebSocket服务器发送该待消费事件。

在获取到Kafka消息队列中的待消费事件时,WebSocket服务器中的第二WebSocket服务器获取所述待消费事件对应的目标接口信息。其中,该第二WebSocket服务器可以包括第一WebSocket服务器。

步骤S103,所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述目标接口信息匹配的目标WebSocket服务器;

本实施例中,在获取到目标接口信息时,第二WebSocket服务器基于所述目标接口信息查询Redis缓存,以在WebSocket服务器中确定与所述目标接口信息匹配的目标WebSocket服务器,具体地,第二WebSocket服务器在Redis缓存的所有第一数据中,查询第一key为该目标接口信息的第一目标数据,获取第一目标数据对应的第一Set数据中的第一服务器IP地址,将该第一服务器IP地址对应的WebSocket服务器,作为目标WebSocket服务器。

步骤S104,所述第二WebSocket服务器发送所述待消费事件对应的推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端。

本实施例中,在获取到目标WebSocket服务器时,第二WebSocket服务器发送所述待消费事件对应的推送请求至目标WebSocket服务器,目标WebSocket服务器推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端,具体地,该推送请求还可以包括目标接口信息所对应的目标sessionID,对于每一个目标WebSocket服务器,在接收到该推送请求时,该目标WebSocket服务器通过该推送请求确定其对应的目标sessionID,目标WebSocket服务器获取待消费事件,并将该待消费事件推送至该目标sessionID所对应的目标用户终端。

本实施例提出的基于WebSocket的消息推送方法,通过在接收到第一用户终端发送的订阅请求时,WebSocket服务器中的第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存;接着在获取到Kafka消息队列中的待消费事件时,WebSocket服务器中的第二WebSocket服务器获取所述待消费事件对应的目标接口信息;而后所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述目标接口信息匹配的目标WebSocket服务器;然后所述第二WebSocket服务器发送所述待消费事件对应的推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端,通过采用以磁盘存储的Kafka作为消息中间件,能够避免海量数据存储问题以及扩容成本问题,提高了数据存储容量以及数据可靠性,同时由于磁盘空间充足,能够利用Kafka数据副本机制进行多重备份,保障了数据安全性。

同时,使用多台WebSocket服务器(第二WebSocket服务器)作为消息广播服务器,避免了服务器单点故障,并且系统能够通过增加服务器随时方便地进行横向扩容、提升系统数据处理能力。并且,在Redis缓存中存储sessionID、WebSocket服务器的服务器IP地址以及接口信息,在消费Kafka数据时,仅在有订阅者(sessionID)的服务器进行消息广播,极大减少了消息广播前数据处理的次数,极大节省了系统开销。

基于第一实施例,提出本发明基于WebSocket的消息推送方法的第二实施例,在本实施例中,步骤S103包括:

步骤S201,所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,获得所述目标接口信息对应的目标服务器IP地址;

步骤S202,所述第二WebSocket服务器将WebSocket服务器中目标服务器IP地址对应的WebSocket服务器作为所述目标WebSocket服务器。

本实施例中,在获取到目标接口信息时,第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,获得所述目标接口信息对应的目标服务器IP地址,具体地,第二WebSocket服务器在Redis缓存的所有第一数据中,查询第一key为该目标接口信息的第一目标数据,获取第一目标数据对应的第一Set数据中的第一服务器IP地址,而后将该第一服务器IP地址对应的WebSocket服务器,作为目标WebSocket服务器。

本实施例提出的基于WebSocket的消息推送方法,通过所述第二WebSocket服务器基于所述目标接口信息查询所述Redis缓存,获得所述目标接口信息对应的目标服务器IP地址;接着所述第二WebSocket服务器将WebSocket服务器中目标服务器IP地址对应的WebSocket服务器作为所述目标WebSocket服务器,能够根据目标接口信息准确得到目标WebSocket服务器,通过使用多台WebSocket服务器(第二WebSocket服务器)作为消息广播服务器,避免了服务器单点故障,并且系统能够通过增加服务器随时方便地进行横向扩容、提升系统数据处理能力。并且,在Redis缓存中存储sessionID、WebSocket服务器的服务器IP地址以及接口信息,在消费Kafka数据时,仅在有订阅者(sessionID)的服务器进行消息广播,极大减少了消息广播前数据处理的次数,极大节省了系统开销。

基于第一实施例,提出本发明基于WebSocket的消息推送方法的第三实施例,在本实施例中,步骤S104包括:

步骤S301,所述第二WebSocket服务器获取所述目标接口信息对应的目标sessionID;

步骤S302,所述第二WebSocket服务器基于所述待消费事件以及所述目标sessionID发送推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标sessionID对应的目标用户终端。

本实施例中,第二WebSocket服务器在Redis缓存的所有第一数据中,查询第一key为该目标接口信息的第一目标数据,获取第一目标数据对应的第一Set数据中的第一服务器IP地址时,获取第一目标数据对应的第一Set数据中的sessionID即目标接口信息对应的目标sessionID。

接着,第二WebSocket服务器基于所述待消费事件以及所述目标sessionID发送推送请求至所述目标WebSocket服务器,目标WebSocket服务器基于该推送请求获取待消费事件以及所述目标sessionID,并推送所述待消费事件至所述目标sessionID对应的目标用户终端。

本实施例提出的基于WebSocket的消息推送方法,通过所述第二WebSocket服务器获取所述目标接口信息对应的目标sessionID;接着所述第二WebSocket服务器基于所述待消费事件以及所述目标sessionID发送推送请求至所述目标WebSocket服务器,其中,所述目标WebSocket服务器推送所述待消费事件至所述目标sessionID对应的目标用户终端,能够根据目标sessionID准确将待消费事件推送至对应的目标用户终端,实现在消费Kafka数据时仅在有订阅者(sessionID)的服务器进行消息广播,极大减少了消息广播前数据处理的次数,极大节省了系统开销。

基于第一实施例,提出本发明基于WebSocket的消息推送方法的第四实施例,在本实施例中,该基于WebSocket的消息推送方法还包括:

步骤S401,在检测到第二用户终端对应的断开连接请求时,WebSocket服务器中的第三WebSocket服务器获取所述断开连接请求对应的第二sessionID以及第二服务器IP地址;

步骤S402,所述第三WebSocket服务器基于所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中获取对应的第二接口信息;

步骤S403,所述第三WebSocket服务器基于所述第二接口信息、所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中删除对应的目标数据。

本实施例中,在检测到第二用户终端对应的断开连接请求时,WebSocket服务器中的第三WebSocket服务器获取所述断开连接请求对应的第二sessionID以及第二服务器IP地址,其中,第三WebSocket服务器是与第二用户终端建立长连接的WebSocket服务器,第二服务器IP地址为该第三WebSocket服务器的IP地址,第二sessionID为该第二用户终端对应的sessionID。

接着,第三WebSocket服务器基于所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中获取对应的第二接口信息;具体地,第三WebSocket服务器通过Redis缓存中的第二数据获取第二sessionID以及第二服务器IP地址对应的第二目标数据,将该第二目标数据在的接口信息作为第二接口信息。

而后,第三WebSocket服务器基于所述第二接口信息、所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中删除对应的目标数据。具体地,步骤S403包括:

所述第三WebSocket服务器发送所述第二接口信息、所述第二sessionID以及第二服务器IP地址对应的数据删除指令至所述Redis缓存,其中,所述Redis缓存基于所述数据删除指令删除所述第二接口信息、所述第二sessionID以及第二服务器IP地址对应的第一目标数据以及第二目标数据。其中,第一目标数据的key为所述第二接口信息,第一目标数据的Set数据为所述第二sessionID以及所述第二服务器IP地址,第二目标数据的key为所述第二sessionID以及所述第二服务器IP地址,第二目标数据的Set数据为所述第接口信息,通过对Redis缓存中存储的订阅者信息进行了相应删除,提高了Redis缓存的资源利用率,并能够避免不必要的消息推送。

本实施例提出的基于WebSocket的消息推送方法,通过在检测到第二用户终端对应的断开连接请求时,WebSocket服务器中的第三WebSocket服务器获取所述断开连接请求对应的第二sessionID以及第二服务器IP地址;接着所述第三WebSocket服务器基于所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中获取对应的第二接口信息;而后所述第三WebSocket服务器基于所述第二接口信息、所述第二sessionID以及第二服务器IP地址,在所述Redis缓存中删除对应的目标数据,通过对Redis缓存中存储的订阅者信息进行了相应删除,提高了Redis缓存的资源利用率,并能够避免不必要的消息推送。

基于上述各个实施例,提出本发明基于WebSocket的消息推送方法的第五实施例,在本实施例中,基于WebSocket的消息推送方法还包括:

步骤S501,在接收到第一用户终端发送的订阅请求时,所述第一WebSocket服务器对所述第一用户终端进行权限验证;

步骤S502,在第一用户终端权限验证通过时,所述第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址。

本实施例中,在接收到第一用户终端发送的订阅请求时,第一WebSocket服务器对所述第一用户终端进行权限验证,具体地,第一WebSocket服务器对述第一用户终端当前登录的用户账户进行权限验证,以确定用户是否具备订阅该第一接口信息对应消息的权限。

接着,在第一用户终端权限验证通过时,所述第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址。

本实施例提出的基于WebSocket的消息推送方法,通过在接收到第一用户终端发送的订阅请求时,所述第一WebSocket服务器对所述第一用户终端进行权限验证;接着在第一用户终端权限验证通过时,所述第一WebSocket服务器获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,通过第一用户终端进行权限验证,提高消息推送的准确性。

本发明还提供一种服务器,参照图3,所述服务器包括:第一WebSocket服务器10、第二WebSocket服务器20以及目标WebSocket服务器30,其中,

所述第一WebSocket服务器10包括:

第一获取模块11,用于在接收到第一用户终端发送的订阅请求时,获取所述订阅请求对应的第一接口信息、第一sessionID以及第一服务器IP地址,并关联存储所述第一sessionID、第一接口信息以及第一服务器IP地址至Redis缓存;

所述第二WebSocket服务器20包括:

第二获取模块21,用于在获取到Kafka消息队列中的待消费事件时,获取所述待消费事件对应的目标接口信息;

查询模块22,用于基于所述目标接口信息查询所述Redis缓存,在WebSocket服务器中确定与所述接口信息匹配的目标WebSocket服务器;

第一发送模块23,用于发送所述待消费事件对应的推送请求至所述目标WebSocket服务器;

所述目标WebSocket服务器30包括:

第二发送模块31,用于推送所述待消费事件至所述目标WebSocket服务器对应的目标用户终端。

上述各程序单元所执行的方法可参照本发明基于WebSocket的消息推送方法各个实施例,此处不再赘述。

本发明还提供一种存储介质。

本发明存储介质为计算机可读存储介质,该存储介质上存储有基于WebSocket的消息推送程序,所述基于WebSocket的消息推送程序被处理器执行时实现如上所述的基于WebSocket的消息推送方法的步骤。

其中,在所述处理器上运行的基于WebSocket的消息推送程序被执行时所实现的方法可参照本发明基于WebSocket的消息推送方法各个实施例,此处不再赘述。

此外,本发明实施例还提出一种计算机程序产品,该计算机程序产品上包括基于WebSocket的消息推送程序,所述基于WebSocket的消息推送程序被处理器执行时实现如上所述的基于WebSocket的消息推送方法的步骤。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献