CN112733051A - 一种基于WebSocket的信息推送管理系统及其方法 - Google Patents
一种基于WebSocket的信息推送管理系统及其方法 Download PDFInfo
- Publication number
- CN112733051A CN112733051A CN202011431361.3A CN202011431361A CN112733051A CN 112733051 A CN112733051 A CN 112733051A CN 202011431361 A CN202011431361 A CN 202011431361A CN 112733051 A CN112733051 A CN 112733051A
- Authority
- CN
- China
- Prior art keywords
- access node
- client
- access
- registration information
- information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title abstract description 14
- 238000007726 management method Methods 0.000 claims description 75
- 238000001514 detection method Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 7
- 238000004321 preservation Methods 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
一种基于WebSocket的信息推送管理系统及其方法,其中系统包括:外接的客户端发送WebSocket连接请求;接入层包括多个接入节点和注册模块;接入节点接收WebSocket连接请求,于接入节点接收客户端发送的WebSocket连接请求时,接入节点与客户端建立连接关系;注册模块对客户端和接入节点进行注册,以得到客户端对应的第一注册信息和接入节点对应的第二注册信息;服务层根据第一注册信息对客户端和接入节点之间的消息传递进行管理,还根据WebSocket连接请求数量和连接数量控制接入层是否新增接入节点,以及根据控制结果对第一注册信息和第二注册信息进行更新。本发明的有益效果:对客户端和接入节点的WebSocket连接进行统一管理。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于WebSocket的信息推送管理系统及其方法。
背景技术
B/S(Browser/Server)架构中为了进行实时消息推送,一般会采用WebSocket进行通信。但在分布式架构中,由于同一个用户可能会从浏览器发起的多个WebSocket连接会分散至服务端集群的不同节点中。为了保证将需要推送的消息推送给该用户下处于不能服务端集群节点上的所有WebSocket连接,现有技术一般采取基于Redis发布/订阅模式或者消息队列(Message Queue)的广播方式将消息推送给所有节点,然后在节点内找寻对应的用户WebSocket连接进行消息推送。
然而,上述现有技术存在消息无效消费,无法实现消息精准推送;其中,使用消息广播方式,对于服务端中的每个节点来说接收的消息量相同,无法进行水平扩容,并且性能较低;而使用消息广播方式,也可能会造成消息乱序,对于有严格顺序要求的场景可能无法满足。
发明内容
针对现有技术中存在的上述问题,现提供一种基于WebSocket的信息推送管理系统及其方法。
具体技术方案如下:
一种基于WebSocket的信息推送管理系统,其中,包括:
外接的客户端,用于发送WebSocket连接请求;
接入层,与外接的客户端连接,接入层包括多个接入节点和注册模块;
接入节点用于接收WebSocket连接请求,于接入节点接收客户端发送的WebSocket连接请求时,接入节点与客户端建立连接关系;
注册模块连接每个接入节点,用于对客户端进行注册,以得到每个客户端对应的第一注册信息,还用于对接入节点进行注册,以得到每个接入节点对应的第二注册信息,其中第一注册信息为客户端和与客户端连接的每个接入节点,第二注册信息为接入节点和与接入节点连接的每个客户端;
服务层,与接入层和外接的客户端连接,用于获取并根据第一注册信息对接入节点的进行消息推送,还用于获取客户端发送的WebSocket连接请求数量,以及获取每个第二注册信息中的接入节点对应的客户端的连接数量,并根据WebSocket连接请求数量和连接数量控制接入层是否新增接入节点,以及根据控制结果对第一注册信息和第二注册信息进行更新。
优选的,基于WebSocket的信息推送管理系统,其中,注册模块包括:
第一注册单元,与客户端连接,用于对建立连接关系的客户端进行注册,以确定与客户端连接的每个接入节点,并将客户端和与客户端连接的每个接入节点的连接信息设置为第一注册信息;
第二注册单元,与接入节点连接,用于对建立连接关系的接入节点进行注册,以确定与接入节点连接的每个客户端,并将接入节点和与接入节点连接的每个客户端的连接信息设置为第二注册信息。
优选的,基于WebSocket的信息推送管理系统,其中,服务器包括:
第一获取模块,用于获取第一注册信息;
第一管理模块,与第一获取模块连接,用于管理第一注册信息中的客户端和与客户端连接的每个接入节点之间的消息传递;
第二获取模块,用于获取客户端发送的WebSocket连接请求数量和第二注册信息;
第二管理模块,与第二获取模块连接,包括第一判断单元和控制单元,控制单元与第一判断单元连接:
第一判断单元,判断第二注册信息中的接入节点的客户端的连接数量是否超过接入节点对应的预设接入阈值,于第二注册信息中的接入节点的客户端的连接数量小于接入节点对应的预设接入阈值时,将接入节点记为可连接节点;
控制单元,将客户端与可连接节点建立连接关系,于可连接节点的数量小于WebSocket连接请求数量时,计算WebSocket连接请求数量和可连接节点的数量之间的新增差值,将客户端连接到新增差值个新增的接入节点中,并对第一注册信息和第二注册信息进行更新。
优选的,基于WebSocket的信息推送管理系统,其中,接入层还包括身份验证模块,用于接收客户端发送的WebSocket连接请求,并为客户端分配唯一标识符,标识符用于客户端与接入节点建立连接关系时的身份验证。
优选的,基于WebSocket的信息推送管理系统,其中,接入层还包括心跳管理模块,心跳管理模块分别与接入节点和注册模块连接,用于检测注册有第二注册信息的接入节点是否可调用,以得到调用信息,并将调用信息发送至注册模块,使得注册模块对所有的接入节点对应的调用信息进行注册,以注册得到一调用信息表。
优选的,基于WebSocket的信息推送管理系统,其中,心跳管理模块包括:
注册信息获取单元,用于获取注册有第二注册信息的接入节点;
心跳发送单元,与注册信息获取单元连接,根据预设心跳检测时间周期性地对每个注册有第二注册信息的接入节点发送检测请求;
心跳接收单元,用于接收接入节点接收到检测请求后向心跳接收单元发送的反馈信息;
调用管理单元,与心跳接收单元连接,当未接收到接入节点反馈的反馈信息时,确定接入节点不可调用,当接收到接入节点反馈的反馈信息时,确定接入节点可调用,以得到接入节点对应的调用信息;
调用信息发送单元,与调用管理单元连接,将接入节点对应的调用信息发送至注册模块,使得注册模块对所有的接入节点对应的调用信息进行注册,以注册得到调用信息表。
优选的,基于WebSocket的信息推送管理系统,其中,接入层还包括一注销模块,与注册模块连接,于客户端和接入节点断开连接时,将第一注册信息和第二注册信息中关联与客户端和接入节点的连接关系进行注销。
优选的,基于WebSocket的信息推送管理系统,其中,还包括:
存储层,存储层分别与接入层和服务层连接,用于存储接入层生成的第一注册信息和第二注册信息,使得服务层从存储层中获取第一注册信息和第二注册信息。
优选的,基于WebSocket的信息推送管理系统,其中,服务层与接入层之间采用HTTP通信协议进行消息传递。
还包括一种基于WebSocket的信息推送管理方法,其中,应用于任务管理系统中,任务管理系统包括多个接入节点,于接入节点接收外接的客户端发送的WebSocket连接请求时,接入节点与客户端建立连接关系;任务管理方法具体包括以下步骤:
接入节点接收WebSocket连接请求;
对客户端进行注册,以得到每个客户端对应的第一注册信息;
对接入节点进行注册,以得到每个接入节点对应的第二注册信息;
其中,第一注册信息为客户端和与客户端连接的每个接入节点,第二注册信息为接入节点和与接入节点连接的每个客户端;
获取并根据第一注册信息对客户端和接入节点之间的消息传递进行管理;
获取客户端发送的WebSocket连接请求数量,以及获取每个第二注册信息中的接入节点对应的客户端的连接数量;
根据WebSocket连接请求数量和连接数量控制接入层是否新增接入节点,以及根据控制结果对第一注册信息和第二注册信息进行更新。
上述技术方案具有如下优点或有益效果:
通过对客户端进行注册,从而实现获取客户端和与客户端连接的每个接入节点对应的第一注册信息;进而实现基于Redis实现存储WebSocket连接信息的注册中心,使用Redis保存任务管理系统所需的用户WebSocket连接所在接入节点的Host信息以及该接入节点所属所有的客户端,服务层根据第一注册信息中的客户端查询该客户端所有的WebSocket注册信息,即根据第一注册信息查询第一注册信息中的客户端和与该客户端连接的所有接入节点,并将消息精准投递至对应的接入节点的WebSocket中完成消息推送;
通过对接入节点进行注册,从而实现获取接入节点和与接入节点连接的每个客户端对应的第二注册信息;进而实现基于Redis实现存储WebSocket连接信息的注册中心,使用Redis保存任务管理系统所需的用户WebSocket连接所在接入节点的Host信息以及该接入节点所属所有的客户端,服务层根据第二注册信息中的接入节点查询该接入节点所有的WebSocket注册信息,即根据第二注册信息查询第二注册信息中的接入节点和与该接入节点连接的所有客户端,并获取客户端发送的WebSocket连接请求数量,获取每个第二注册信息中的接入节点对应的客户端的连接数量,并根据WebSocket连接请求数量和连接数量控制接入层是否新增接入节点,以及根据控制结果对第一注册信息和第二注册信息进行更新;从而实现在客户端与接入层建立连接的过程中,若接入层资源不足,则可进行水平扩容以满足建立WebSocket连接的需要;
通过在接入层设置有注册模块分别对客户端和接入节点进行注册,从而实现获取客户端和与客户端连接的每个接入节点对应的第一注册信息,和获取接入节点和与接入节点连接的每个客户端对应的第二注册信息;进而实现采用注册模块将客户端和接入节点的WebSocket连接信息进行统一管理,实现了消息推送服务将消息精准推送给对应客户端的WebSocket连接,减少广播模式中的无效推送,进而提升推送效率;
通过HTTP通信协议使得实现同步消息推送,能够保证消息推送的时序性。
附图说明
参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
图1为本发明基于WebSocket的信息推送管理系统的实施例的原理框图一;
图2为本发明基于WebSocket的信息推送管理系统的实施例的原理框图二;
图3为本发明基于WebSocket的信息推送管理系统的实施例的注册模块的原理框图;
图4为本发明基于WebSocket的信息推送管理系统的实施例的服务层的原理框图;
图5为本发明基于WebSocket的信息推送管理系统的实施例的控制单元的原理框图;
图6为本发明基于WebSocket的信息推送管理系统的实施例的接入层的原理框图;
图7为本发明基于WebSocket的信息推送管理系统的实施例的心跳管理模块的原理框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明包括本发明包括一种基于WebSocket的信息推送管理系统,如图1所示,包括:
外接的客户端1,用于发送WebSocket连接请求;
接入层2,与外接的客户端1连接,接入层2包括多个接入节点21和注册模块22;
接入节点21用于接收WebSocket连接请求,于接入节点21接收客户端1发送的WebSocket连接请求时,接入节点21与客户端1建立连接关系;
注册模块22连接每个接入节点21,用于对客户端1进行注册,以得到每个客户端1对应的第一注册信息,还用于对接入节点21进行注册,以得到每个接入节点21对应的第二注册信息,其中第一注册信息为客户端1和与客户端1连接的每个接入节点21,第二注册信息为接入节点21和与接入节点21连接的每个客户端1;
服务层3,与接入层2和外接的客户端1连接,用于获取并根据第一注册信息对接入节点21的进行消息推送,还用于获取客户端1发送的WebSocket连接请求数量,以及获取每个第二注册信息中的接入节点21对应的客户端1的连接数量,并根据WebSocket连接请求数量和连接数量控制接入层2是否新增接入节点21,以及根据控制结果对第一注册信息和第二注册信息进行更新。
在上述实施例中,通过在接入层2设置有注册模块22对客户端1进行注册,从而实现获取客户端1和与客户端1连接的每个接入节点21对应的第一注册信息;进而实现基于Redis实现存储WebSocket连接信息的注册中心,使用Redis保存任务管理系统所需的用户WebSocket连接所在接入节点21的Host信息以及该接入节点21所属所有的客户端1,服务层3根据第一注册信息中的客户端1查询该客户端1所有的WebSocket注册信息,即根据第一注册信息查询第一注册信息中的客户端1和与该客户端1连接的所有接入节点21,并将消息精准投递至对应的接入节点21的WebSocket中完成消息推送。
在上述实施例中,通过在接入层2设置有注册模块22对接入节点21进行注册,从而实现获取接入节点21和与接入节点21连接的每个客户端1对应的第二注册信息;进而实现基于Redis实现存储WebSocket连接信息的注册中心,使用Redis保存任务管理系统所需的用户WebSocket连接所在接入节点21的Host信息以及该接入节点21所属所有的客户端1,服务层3根据第二注册信息中的接入节点21查询该接入节点21所有的WebSocket注册信息,即根据第二注册信息查询第二注册信息中的接入节点21和与该接入节点21连接的所有客户端1,并获取客户端1发送的WebSocket连接请求数量,获取每个第二注册信息中的接入节点21对应的客户端1的连接数量,并根据WebSocket连接请求数量和连接数量控制接入层2是否新增接入节点21,以及根据控制结果对第一注册信息和第二注册信息进行更新;从而实现在客户端1与接入层2建立连接的过程中,若接入层2资源不足,则可进行水平扩容以满足建立WebSocket连接的需要。
在上述实施例中,通过在接入层2设置有注册模块22分别对客户端1和接入节点21进行注册,从而实现获取客户端1和与客户端1连接的每个接入节点21对应的第一注册信息,和获取接入节点21和与接入节点21连接的每个客户端1对应的第二注册信息;进而实现采用注册模块22将客户端1和接入节点21的WebSocket连接信息进行统一管理,实现了消息推送服务将消息精准推送给对应客户端1的WebSocket连接,减少广播模式中的无效推送,进而提升推送效率。
需要说明的是,服务层3进行的是水平扩容,并不是对接入节点21进行调用,对接入节点21进行调用是现有技术路由器的技术手段,和本实施例的水平扩容不同。
进一步地,在上述实施例中,如图3所示,注册模块22包括:
第一注册单元221,与客户端1连接,用于对建立连接关系的客户端1进行注册,以确定与客户端1连接的每个接入节点21,并将客户端1和与客户端1连接的每个接入节点21的连接信息设置为第一注册信息;
第二注册单元222,与接入节点21连接,用于对建立连接关系的接入节点21进行注册,以确定与接入节点21连接的每个客户端1,并将接入节点21和与接入节点21连接的每个客户端1的连接信息设置为第二注册信息。
在上述实施例中,第一注册单元221只对建立连接关系的客户端1进行注册,第二注册单元222也只对建立连接关系的接入节点21进行注册,从而实现只对建立连接关系的客户端1和接入节点21进行消息传递和连接数量的管理,进而减少无效推送和提升推送效率。
作为优选的实施方式,第一注册单元221可以基于Redis的set数据结构对建立连接关系的客户端1进行注册,例如,将key设置为客户端1的唯一标识{userId},并将value设置为与客户端1连接的每个接入节点21的连接信息的host集合;
其中,host集合中存储的元素可以使用jsonString,方便后续扩展新的第一注册信息;
第二注册单元222也可以基于Redis的set数据结构对建立连接关系的接入节点21进行注册,将key设置为接入层2节点的host,并将value设置为和当前接入节点21建立WebSocket连接的客户端1的唯一标识{userId}。
作为优选的实施方式,第一注册单元221可以通过对客户端1的唯一标识和与客户端1连接的每个接入节点21的地址信息进行注册得到客户端1对应的第一注册信息;第二注册单元222同上。
作为优选的实施方式,第一注册单元221根据通过对客户端1的唯一标识和与客户端1连接的每个接入节点21的设备标识进行注册得到客户端1对应的第一注册信息,该设备标识对应的地址信息中即为与客户端1连接的接入节点21的地址信息;第二注册单元222同上。
进一步地,在上述实施例中,接入层2还包括一注销模块23,与注册模块22连接,于客户端1和接入节点21断开连接时,将第一注册信息和第二注册信息中关联与客户端1和接入节点21的连接关系进行注销。
作为优选的实施方式,用户所在的待关闭客户端1连接有第一接入节点21和第二接入节点21,当用户关闭浏览器时,用户所在的待关闭客户端1断开WebSocket连接,此时的待关闭客户端1断开与所有的接入节点21,因此,此时可以将待关闭客户端1对应的整个第一注册信息进行注销,例如,此时可以在第一注册信息集合中将待关闭客户端1对应的第一注册信息取出,这里直接使用Redis自带的命令srem;同时分别于第一接入节点21和第二接入节点21对应的第二注册信息中将待关闭客户端1进行注销;例如,也可以第一接入节点21和第二接入节点21对应的第二注册信息中的host集合将对应的set集合中的用户唯一标识删除,这里直接使用Redis自带的命令srem。
进一步地,在上述实施例中,如图4所示,服务层3包括:
第一获取模块31,用于获取第一注册信息;
第一管理模块32,与第一获取模块31连接,用于根据第一注册信息对接入节点21的进行消息推送;
第二获取模块33,用于获取客户端1发送的WebSocket连接请求数量和第二注册信息;
第二管理模块34,与第二获取模块33连接,包括判断单元341和控制单元342,控制单元342与判断单元341连接:
判断单元341,判断第二注册信息中的接入节点21的客户端1的连接数量是否超过接入节点21对应的预设接入阈值,于第二注册信息中的接入节点21的客户端1的连接数量小于接入节点21对应的预设接入阈值时,将接入节点21记为可连接节点;
控制单元342,将客户端1与可连接节点建立连接关系,于可连接节点的数量小于WebSocket连接请求数量时,计算WebSocket连接请求数量和可连接节点的数量之间的新增差值,将客户端1连接到新增差值个新增的接入节点21中,并对第一注册信息和第二注册信息进行更新。
在上述实施例中,实现在客户端1与接入层2建立连接的过程中,若接入层2的接入节点21不能满足客户端1的需求时,则可对接入层2的接入节点21进行水平扩容以满足建立WebSocket连接的需要;并在水平扩容后对第一注册信息和第二注册信息进行更新。
作为优选的实施方式,外接的客户端1下发WebSocket连接请求,需要与接入层2中的至少一个接入节点21建立WebSocket连接关系,当接入层2的接入节点21充足时,直接和接入层2的接入节点21建立WebSocket连接关系;当接入层2的接入节点21负载时,服务层3控制接入层2新增对应数量的接入节点21,使得外接的客户端1连接到新增的接入节点21上,以建立WebSocket连接关系,从而实现增加接入层2集群中接入节点21的数量,用以增大可使用的WebSocket连接数;
其中,接入层2的每个接入节点21均设置有对应的预设接入阈值,当每个第二注册信息中的接入节点21的客户端1的连接数量超过接入节点21对应的预设接入阈值时,服务层3控制接入层2新增接入节点21,以将超出预设接入阈值的客户端1连接到新增的接入节点21中;
需要说明的是,每个接入节点21均对应的预设接入阈值可以一致也可以根据需要自行设置;
作为优选的实施方式,以接入层2中的每个接入节点的预设接入阈值均设置为2,接入层2包括第一接入节点、第二接入节点和第三接入节点,以及以一个待连接客户端发送WebSocket连接请求为例;当第一待连接客户端需要与两个接入节点建立WebSocket连接关系时;
第一待连接客户端向接入层2发送两个WebSocket连接请求,第二获取模块33获取得到的第一待连接客户端的WebSocket连接请求数量为2;
然而第二获取模块33获取第一接入节点对应的第二注册信息,第二接入节点对应的第二注册信息和第三接入节点对应的第二注册信息,第一接入节点对应的第二注册信息和第二接入节点对应的第二注册信息中显示第一接入节点和第二接入节点均已经和两个其他客户端1建立WebSocket连接关系,此时只有第三接入节点对应的第二注册信息显示第三接入节点没有和客户端1建立WebSocket连接关系;判断单元341判断第一接入节点、第二接入节点和第三接入节点对应的客户端1的连接数量是否超过预设接入阈值,此时只有第三接入节点客户端1的连接数量小于预设接入阈值,因此将第三接入节点记为接入节点记为可连接节点;
控制单元342可以将第一待连接客户端与第三接入节点建立WebSocket连接关系,然而第一待连接客户端还缺少一个需要建立连接关系的接入节点,此时接入层2新增一个第四接入节点连接第一待连接客户端。
作为优选的实施方式,以接入层2中的每个接入节点的预设接入阈值均设置为2,接入层2包括第一接入节点、第二接入节点和第三接入节点,以及以多个待连接客户端发送WebSocket连接请求为例;当第二待连接客户端需要与两个接入节点建立WebSocket连接关系,并且第三待连接客户端需要与三个接入节点建立WebSocket连接关系时;
第二待连接客户端向接入层2发送两个WebSocket连接请求,第二获取模块33获取得到的第二待连接客户端的WebSocket连接请求数量为2;以及
第三待连接客户端向接入层2发送三个WebSocket连接请求,第二获取模块33获取得到的第三待连接客户端的WebSocket连接请求数量为3;
然而第二获取模块33分别获取第二接入节点和第三接入节点对应的第二注册信息,第二接入节点对应的第二注册信息和第三接入节点对应的第二注册信息,第一接入节点对应的第二注册信息和第二接入节点对应的第二注册信息中显示第一接入节点和第二接入节点均已经和两个其他客户端1建立WebSocket连接关系,此时只有第三接入节点对应的第二注册信息显示第三接入节点没有和客户端1建立WebSocket连接关系;
判断单元341判断第一接入节点、第二接入节点和第三接入节点对应的客户端1的连接数量是否超过预设接入阈值,此时只有第三接入节点客户端1的连接数量(为0)小于预设接入阈值,因此将第三接入节点记为接入节点记为可连接节点;
控制单元342可以先将第二待连接客户端与第三接入节点建立WebSocket连接关系,然而第二待连接客户端还缺少一个需要建立连接关系的接入节点,此时接入层2新增一个第四接入节点连接第二待连接客户端;
随后,判断单元341判断第一接入节点、第二接入节点、第三接入节点和第四接入节点对应的客户端1的连接数量是否超过预设接入阈值,此时第三接入节点和第四接入节点的客户端1的连接数量(均为1)小于预设接入阈值,因此将第三接入节点和第四接入节点记为接入节点记为可连接节点;
控制单元342可以将第三待连接客户端分别与第三接入节点、第四接入节点建立WebSocket连接关系,然而第三待连接客户端还缺少一个需要建立连接关系的接入节点,此时接入层2新增一个第五接入节点连接第三待连接客户端。
在上述实施例中,如图5所示,控制单元342可以包括:
连接组件351,用于将客户端1与可连接节点建立连接关系;
计算组件352,用于计算接入层2中的可连接节点的数量;
判断组件353,分别与连接组件351和计算组件352连接,用于判断可连接节点的数量是否小于WebSocket连接请求数量,并于可连接节点的数量小于WebSocket连接请求数量时,计算WebSocket连接请求数量和可连接节点的数量之间的新增差值;
新增组件354,与判断组件353连接,控制接入层2增加新增差值个接入节点21,并将客户端1连接到新增差值个新增的接入节点21中;
更新组件355,与新增组件354连接,对第一注册信息和第二注册信息进行更新。
在上述实施例中,连接组件351和计算组件352之间的执行顺序可以互换;
例如,可以先计算接入层2中的可连接节点的数量,然后将客户端1与可连接节点建立连接关系;
例如,也可以先将客户端1与已有的可连接节点建立连接关系,然后在可连接节点不足时计算接入层2中的可连接节点的数量,方便后续对新增差值的计算。
进一步地,在上述实施例中,接入层2还包括身份验证模块24,与接入节点21连接,用于为连接关系分配唯一标识符,标识符用于客户端1与接入节点21建立连接关系时的身份验证。
在上述实施例中,服务层3通过是否能查询到第一注册信息中的客户端1对应的唯一标识符来判断客户端1是否在线,并根据第一注册信息列表中的每个第一注册信息对应的客户端1进行消息的精准推送,如果不能查询到第一注册信息中的客户端1对应的唯一标识符则认为当前客户端1未在线。
进一步地,在上述实施例中,如图6所示,接入层2还包括心跳管理模块25,心跳管理模块25分别与接入节点21和注册模块22连接,用于检测注册有第二注册信息的接入节点21是否可调用,以得到调用信息,并将调用信息发送至注册模块22,使得注册模块22对所有的接入节点21对应的调用信息进行注册,以注册得到一调用信息表。
作为优选的实施方式,心跳管理模块25可以基于Redis的set数据结构对注册有第二注册信息的接入节点21进行注册,将key设置为固定值”pods”,并将value为一个map结构,map的key设置为在线的接入节点21的host,map的value设置为接入节点21定时发送的心跳数据,这里的心跳数据是用于进行非健康节点数据删除使用。
进一步地,在上述实施例中,如图7所示,心跳管理模块25包括:
注册信息获取单元251,用于获取注册有第二注册信息的接入节点21;
心跳发送单元252,与注册信息获取单元251连接,根据预设心跳检测时间周期性地对每个注册有第二注册信息的接入节点21发送检测请求;
心跳接收单元253,用于接收接入节点21接收到检测请求后向心跳接收单元253发送的反馈信息;
调用管理单元254,与心跳接收单元253连接,当未接收到接入节点21反馈的反馈信息时,确定接入节点21不可调用,当接收到接入节点21反馈的反馈信息时,确定接入节点21可调用,以得到接入节点21对应的调用信息;
调用信息发送单元255,与调用管理单元254连接,将接入节点21对应的调用信息发送至注册模块22,使得注册模块22对所有的接入节点21对应的调用信息进行注册,以注册得到调用信息表。
在上述实施例中,调用信息表为hash表。
在上述实施例中,心跳管理模块25检查接入节点21的健康状况检查,并将心跳信息注册到调用信息表中。
进一步地,在上述实施例中,服务层3还用于根据调用信息表对存储层4中的第一注册信息和第二注册信息进行更新。
在上述实施例中,服务层3每隔预设更新时间根据调用信息表对存储层4中的第一注册信息和第二注册信息进行更新,例如,当接入层2中的某个接入节点21存在宕机情况,服务层3每隔五分钟根据调用信息表进行无用的接入节点21清理,这里执行清理逻辑的接入节点21是通过争抢分布式锁确定,同时将对存储层4中的第一注册信息和第二注册信息进行更新。
进一步地,在上述实施例中,如图2所示,还包括:
存储层4,存储层4分别与接入层2和服务层3连接,用于存储接入层2生成的第一注册信息和第二注册信息,使得服务层3从存储层4中获取第一注册信息和第二注册信息。
进一步地,在上述实施例中,服务层3与接入层2之间采用HTTP通信协议进行消息传递。
在上述实施例中,通过HTTP通信协议使得实现同步消息推送,能够保证消息推送的时序性。
在上述实施例中,服务层3还可以将第一注册信息、第二注册信息和调用信息表进行实时展示。
作为优选的实施方式,服务层3能够向终端下发展示界面,使得用户查看第一注册信息、第二注册信息和调用信息表。
需要说明的是,终端可以为便携式、袖珍式、手持式等多种类型的终端,如智能手机、平板电脑、笔记本电脑、台式计算机等。
还包括一种基于WebSocket的信息推送管理方法,其中,应用于任务管理系统中,任务管理系统包括多个接入节点,于接入节点接收外接的客户端1发送的WebSocket连接请求时,接入节点与客户端建立连接关系;任务管理方法具体包括以下步骤:
接入节点接收WebSocket连接请求;
对客户端进行注册,以得到每个客户端对应的第一注册信息;
对接入节点进行注册,以得到每个接入节点对应的第二注册信息;
其中,第一注册信息为客户端和与客户端连接的每个接入节点,第二注册信息为接入节点和与接入节点连接的每个客户端;
获取并根据第一注册信息对客户端和接入节点之间的消息传递进行管理;
获取客户端发送的WebSocket连接请求数量,以及获取每个第二注册信息中的接入节点对应的客户端的连接数量;
根据WebSocket连接请求数量和连接数量控制接入层是否新增接入节点,以及根据控制结果对第一注册信息和第二注册信息进行更新。
上述基于WebSocket的信息推送管理方法的实施方式和任务管理系统的实施方式一致,在此不做详细阐述。
以上仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (10)
1.一种基于WebSocket的信息推送管理系统,其特征在于,包括:
外接的客户端,用于发送WebSocket连接请求;
接入层,与外接的客户端连接,所述接入层包括多个接入节点和注册模块;
所述接入节点用于接收所述WebSocket连接请求,于所述接入节点接收客户端发送的所述WebSocket连接请求时,所述接入节点与客户端建立连接关系;
所述注册模块连接每个所述接入节点,用于对客户端进行注册,以得到每个客户端对应的第一注册信息,还用于对所述接入节点进行注册,以得到每个所述接入节点对应的第二注册信息,其中所述第一注册信息为客户端和与客户端连接的每个所述接入节点,所述第二注册信息为所述接入节点和与所述接入节点连接的每个客户端;
服务层,与所述接入层和外接的客户端连接,用于获取并根据所述第一注册信息对所述接入节点的进行消息推送,还用于获取客户端发送的WebSocket连接请求数量,以及获取每个所述第二注册信息中的所述接入节点对应的客户端的连接数量,并根据所述WebSocket连接请求数量和所述连接数量控制所述接入层是否新增所述接入节点,以及根据控制结果对所述第一注册信息和所述第二注册信息进行更新。
2.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,所述注册模块包括:
第一注册单元,与客户端连接,用于对建立连接关系的客户端进行注册,以确定与客户端连接的每个所述接入节点,并将客户端和与客户端连接的每个所述接入节点的连接信息设置为所述第一注册信息;
第二注册单元,与所述接入节点连接,用于对建立连接关系的所述接入节点进行注册,以确定与所述接入节点连接的每个客户端,并将所述接入节点和与所述接入节点连接的每个客户端的连接信息设置为所述第二注册信息。
3.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,所述服务器包括:
第一获取模块,用于获取所述第一注册信息;
第一管理模块,与所述第一获取模块连接,用于根据所述第一注册信息对所述接入节点的进行消息推送;
第二获取模块,用于获取客户端发送的所述WebSocket连接请求数量和所述第二注册信息;
第二管理模块,与所述第二获取模块连接,包括第一判断单元和控制单元,所述控制单元与所述第一判断单元连接:
所述第一判断单元,判断所述第二注册信息中的所述接入节点的客户端的连接数量是否超过所述接入节点对应的所述预设接入阈值,于所述第二注册信息中的所述接入节点的客户端的连接数量小于所述接入节点对应的所述预设接入阈值时,将所述接入节点记为可连接节点;
所述控制单元,将客户端与所述可连接节点建立连接关系,于所述可连接节点的数量小于所述WebSocket连接请求数量时,计算所述WebSocket连接请求数量和所述可连接节点的数量之间的新增差值,将客户端连接到所述新增差值个新增的所述接入节点中,并对所述第一注册信息和所述第二注册信息进行更新。
4.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,所述接入层还包括身份验证模块,与所述接入节点连接,用于为连接关系分配唯一标识符,所述标识符用于客户端与所述接入节点建立连接关系时的身份验证。
5.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,所述接入层还包括心跳管理模块,所述心跳管理模块分别与所述接入节点和所述注册模块连接,用于检测注册有所述第二注册信息的所述接入节点是否可调用,以得到调用信息,并将所述调用信息发送至所述注册模块,使得所述注册模块对所有的所述接入节点对应的所述调用信息进行注册,以注册得到一调用信息表。
6.如权利要求5所述的基于WebSocket的信息推送管理系统,其特征在于,所述心跳管理模块包括:
注册信息获取单元,用于获取注册有所述第二注册信息的所述接入节点;
心跳发送单元,与所述注册信息获取单元连接,根据预设心跳检测时间周期性地对每个注册有所述第二注册信息的所述接入节点发送检测请求;
心跳接收单元,用于接收所述接入节点接收到所述检测请求后向所述心跳接收单元发送的反馈信息;
调用管理单元,与所述心跳接收单元连接,当未接收到所述接入节点反馈的所述反馈信息时,确定所述接入节点不可调用,当接收到所述接入节点反馈的所述反馈信息时,确定所述接入节点可调用,以得到所述接入节点对应的所述调用信息;
调用信息发送单元,与所述调用管理单元连接,将所述接入节点对应的所述调用信息发送至所述注册模块,使得所述注册模块对所有的所述接入节点对应的所述调用信息进行注册,以注册得到所述调用信息表。
7.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,所述接入层还包括一注销模块,与所述注册模块连接,于所述客户端和所述接入节点断开连接时,将所述第一注册信息和所述第二注册信息中关联与所述客户端和所述接入节点的连接关系进行注销。
8.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,还包括:
存储层,所述存储层分别与所述接入层和所述服务层连接,用于存储所述接入层生成的所述第一注册信息和所述第二注册信息,使得所述服务层从所述存储层中获取所述第一注册信息和所述第二注册信息。
9.如权利要求1所述的基于WebSocket的信息推送管理系统,其特征在于,服务层与所述接入层之间采用HTTP通信协议进行消息传递。
10.一种基于WebSocket的信息推送管理方法,其特征在于,应用于任务管理系统中,所述任务管理系统包括多个接入节点,于所述接入节点接收外接的客户端发送的所述WebSocket连接请求时,所述接入节点与客户端建立连接关系;所述任务管理方法具体包括以下步骤:
所述接入节点接收所述WebSocket连接请求;
对客户端进行注册,以得到每个客户端对应的第一注册信息;
对所述接入节点进行注册,以得到每个所述接入节点对应的第二注册信息;
其中,所述第一注册信息为客户端和与客户端连接的每个所述接入节点,所述第二注册信息为所述接入节点和与所述接入节点连接的每个客户端;
获取并根据所述第一注册信息对所述接入节点的进行消息推送;
获取客户端发送的WebSocket连接请求数量,以及获取每个所述第二注册信息中的所述接入节点对应的客户端的连接数量;
根据所述WebSocket连接请求数量和所述连接数量控制所述接入层是否新增所述接入节点,以及根据控制结果对所述第一注册信息和所述第二注册信息进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011431361.3A CN112733051A (zh) | 2020-12-09 | 2020-12-09 | 一种基于WebSocket的信息推送管理系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011431361.3A CN112733051A (zh) | 2020-12-09 | 2020-12-09 | 一种基于WebSocket的信息推送管理系统及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112733051A true CN112733051A (zh) | 2021-04-30 |
Family
ID=75598702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011431361.3A Pending CN112733051A (zh) | 2020-12-09 | 2020-12-09 | 一种基于WebSocket的信息推送管理系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112733051A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640705A (zh) * | 2022-04-22 | 2022-06-17 | 山东恒远智能科技有限公司 | 一种大规模物联终端心跳监控方法 |
CN115550432A (zh) * | 2022-10-27 | 2022-12-30 | 浪潮云信息技术股份公司 | 一种动态数据的订阅和推送方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901954A (zh) * | 2015-05-16 | 2015-09-09 | 丁明云 | 一种物联网软交换系统及其方法 |
CN108667861A (zh) * | 2017-03-28 | 2018-10-16 | 比亚迪股份有限公司 | 通过浏览器对设备实时监控的方法、系统以及服务器 |
EP3649804A1 (en) * | 2017-08-18 | 2020-05-13 | T-Mobile USA, Inc. | Web access in 5g environments |
CN111565229A (zh) * | 2020-04-29 | 2020-08-21 | 创盛视联数码科技(北京)有限公司 | 一种基于Redis的通信系统分布式方法 |
-
2020
- 2020-12-09 CN CN202011431361.3A patent/CN112733051A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901954A (zh) * | 2015-05-16 | 2015-09-09 | 丁明云 | 一种物联网软交换系统及其方法 |
CN108667861A (zh) * | 2017-03-28 | 2018-10-16 | 比亚迪股份有限公司 | 通过浏览器对设备实时监控的方法、系统以及服务器 |
EP3649804A1 (en) * | 2017-08-18 | 2020-05-13 | T-Mobile USA, Inc. | Web access in 5g environments |
CN111565229A (zh) * | 2020-04-29 | 2020-08-21 | 创盛视联数码科技(北京)有限公司 | 一种基于Redis的通信系统分布式方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640705A (zh) * | 2022-04-22 | 2022-06-17 | 山东恒远智能科技有限公司 | 一种大规模物联终端心跳监控方法 |
CN114640705B (zh) * | 2022-04-22 | 2022-08-09 | 山东恒远智能科技有限公司 | 一种大规模物联终端心跳监控方法 |
CN115550432A (zh) * | 2022-10-27 | 2022-12-30 | 浪潮云信息技术股份公司 | 一种动态数据的订阅和推送方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109246220B (zh) | 一种消息推送系统及方法 | |
CN101426017B (zh) | 一种地址簿的处理方法和系统 | |
CN103069755B (zh) | 使用多个客户端实例的即时消息传送的方法和系统 | |
US9065788B2 (en) | Method, device and system for voice communication | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其系统 | |
CN112733051A (zh) | 一种基于WebSocket的信息推送管理系统及其方法 | |
CN105991412A (zh) | 消息推送方法及装置 | |
US10063663B2 (en) | Subscribing to multiple resources through a common connection | |
EP2974159B1 (en) | Method, device and system for voice communication | |
CN111343286A (zh) | 一种网络接入系统及网络接入方法 | |
CN107332894B (zh) | 直播方法、装置及系统、服务器、存储介质 | |
CN114338063A (zh) | 消息队列系统、业务处理方法及计算机可读存储介质 | |
EP4096328A1 (en) | Network function registration method and apparatus, network function discovery method and apparatus, and device and medium | |
CN112423145B (zh) | 数据处理方法、装置、系统、服务器及介质 | |
CN111930482A (zh) | 基于节点集群的任务处理方法、装置、设备及存储介质 | |
CN108632355B (zh) | 一种家电网络选路方法、控制终端、可读存储介质及设备 | |
CN110572350B (zh) | 一种进行ims业务注册的方法和设备 | |
CN105323270B (zh) | 网络信息推送方法和系统 | |
CN114338383B (zh) | 一种视频设备简化配置方法及系统 | |
CN115840754A (zh) | 虚拟资源管理方法、装置及电子设备 | |
CN110784510A (zh) | 目标服务节点接入总线的方法、服务节点的信息交互方法 | |
CN108668151B (zh) | 音视频交互方法及装置 | |
CN112910796B (zh) | 流量管理方法、装置、设备、存储介质以及程序产品 | |
CN113746909A (zh) | 网络连接方法、装置、电子设备和计算机可读存储介质 | |
EP3758308B1 (en) | Correspondence processing method and device based on interworking rcs system |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210430 |