CN116055554B - 一种基于消息机制并应用于数字化业务的通知引擎 - Google Patents
一种基于消息机制并应用于数字化业务的通知引擎 Download PDFInfo
- Publication number
- CN116055554B CN116055554B CN202310067060.4A CN202310067060A CN116055554B CN 116055554 B CN116055554 B CN 116055554B CN 202310067060 A CN202310067060 A CN 202310067060A CN 116055554 B CN116055554 B CN 116055554B
- Authority
- CN
- China
- Prior art keywords
- message
- user
- token
- file
- socket 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.)
- Active
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims description 39
- 238000013507 mapping Methods 0.000 claims description 14
- 238000013475 authorization Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 abstract description 9
- 239000002699 waste material Substances 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 4
- 239000000969 carrier Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 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
- 238000007781 pre-processing Methods 0.000 description 1
- 210000001210 retinal vessel Anatomy 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- 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]
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明一种基于消息机制并应用于数字化业务的通知引擎,用户登录利用缓存中间件存储token,socket连接时进行token有效性判断从而避免无效socket连接导致的安全问题和网络资源浪费,通过用户token校验机制结合WebSocket协议,进行用户客户端socket连接有效性判断同时实现消息重推;通过消息体传入FastDFS文件存储路径等信息,同时实现重连接用户的消息重推,避免消息丢失;基于文件存储系统FastDFS,支持文本类型消息和文件类型消息多种类型消息推送,实现文件消息推送,消息提示同时为用户提供文本信息通知和文件预览、下载功能。
Description
技术领域
本发明公开一种基于消息机制并应用于数字化业务的通知引擎,属于信息通信领域。
背景技术
消息通知服务组件是软件平台的基础组件,为平台和业务应用提供消息的送达能力,帮助用户快速获取对应的通知信息,比如收到一条新回复的提示、系统公告的通知、任务待办通知等。在APP和网页应用中最常见的信息交换方式则是消息通知。
目前,实时消息推送主要方式是基于WebSocket实现,如基于Netty通信框架等,但是存在缺乏socket连接有效性校验避免无授权socket连接导致安全问题和浪费网络资源,以及缺少消息重推机制避免消息丢失等问题;软件平台内部用户间经常会有文件消息推送的需求,当前的消息推送系统消息类型单一,无法同时满足文本和文件类型消息推送,提供文件接收功能。
例如,CN 105940433 A公开一种通知引擎,用于向用户提供推荐的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。所述方法中的一种方法包括:接收指示用户对与第一实体相关的通知选项的选择的数据;将所述第一实体添加到所述用户的兴趣列表;至少基于将所述第一实体添加到所述用户的所述兴趣列表来确定提供与实体相关的通知;以及基于确定提供与所述实体相关的所述通知来提供所述通知,但该申请通过实体进行信息交互,缺乏socket连接有效性校验;
同样,CN 108701281 A公开上下文通知引擎,计算设备具有用于向用户提供通知的有限的接口可用性。通过向最紧急和最有影响的通知分配有限的资源,该技术的各方面可以最佳地利用有限的接口。可以为事件指派影响水平和紧急水平。影响水平和紧急水平的组合可以用于选择具有适当资源使用水平的通信信道;但该申请同样缺乏socket连接有效性校验。
发明内容
本发明的目的是针对现有技术问题,本发明提供了一种基于基于消息机制并应用于数字化业务的通知引擎,通过用户token校验机制结合WebSocket协议,进行用户客户端socket连接有效性判断同时实现消息重推;通过消息体传入FastDFS文件存储路径等信息,实现文件消息推送,提供接收用户文件预览和下载功能。
本申请技术方案如下:
一种基于消息机制并应用于数字化业务的通知引擎,包括以下步骤:
S1,初始化数据库中消息记录,搭建FastDFS系统,存储文件到FastDFS系统;
S2,用户登录后,清除Redis缓存中保存的用户socket信息,生成token;将生成的token存储到Redis缓存中;Token是在服务端产生的一串字符串,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端返回Token给前端。前端在每次请求的时候带上Token证明请求的合法性。
将token和用户socket信息存储到缓存中间件Redis;用户socket信息包括登录方用户ID,token,channelId;
用户socket信息对象实体包含userId、token和channelId属性字段。
userId表示用户ID,用户ID包括登录方用户ID和接收方用户ID,是用户唯一标识,channelId表示客户端与服务器建立socket连接管道唯一标识,SocketUserInfo表示用户socket信息的对象实体。
当token产生以后,结合登录方用户ID和channelId(初始化为空)产生了用户socket信息。
存储到中间件Redis缓存的信息包括:用户Id与用户socket信息映射,token与用户socket信息映射,其中用户socket信息中也包括token。
S3,客户端连接服务器,使用token进行socket连接有效性校验;
S4,控制服务器端将文本和文件消息推送消息接收方客户端;
S5,消息接收方客户端接收文本和文件消息,更新消息状态;
S6,用户退出登录,调用移除授权方法,删除Redis缓存中记录。
较优地,S1具体包括以下步骤:初始化数据库中消息记录,消息记录表初始化为空,消息发送者上传文件作为系统附件存储到FastDFS系统,返回文件存储ID和文件路径,文件存储ID和文件路径用于文件消息接收方用户查看文件消息时,对文件进行预览和下载;
S2具体包括以下步骤:
201,基于移除用户授权方法,清除Redis缓存中保存的用户socket信息,生成token;
移除用户授权方法具体包括以下步骤:在Redis缓存以登录方用户ID为主键(key)查询是否存在用户socket信息,如果存在所述登录方用户ID的用户socket信息,获取用户socket信息中的token,分别删除Redis缓存中登录方用户Id和token作为主键的用户socket信息;
202,生成token初始字符串,token初始字符串包括令牌主键字符串、系统当前时间戳和UUID;UUID指统随机生成的通用唯一识别码,固定长度为32的字符串,并有唯一性。
203,对初始字符串使用MD5摘要算法生成32位长度token字符串。
Redis缓存中存储用户Id与用户socket信息映射,token与用户socket信息映射;Redis缓存数据结构为:
(userId:SocketUserInfo(userId,token,channelId))
(token:SocketUserInfo(userId,token,channelId))
其中,userId表示用户ID,是用户唯一标识,channelId表示客户端与服务器建立socket连接管道唯一标识,SocketUserInfo表示用户socket信息的对象实体,用户socket信息对象实体包含userId、token和channelId三个属性字段。
S3具体包括以下步骤:
用户Socket连接时从Redis缓存中读取token(以token为key来查询redis缓存,判断是否存在key相同的token的记录,存在则表明用户授权登录连接有效),判断token是否有效,
判断token字符串是否有效具体包括以下步骤:
根据当前输入的token和channelId,查询Redis缓存中token对应用户socket信息是否存在;用户socket信息包括用户ID,token,channelId,用token为key查询Redis缓存中的用户socket信息;
如果查询结果不为空,表明当前socket连接有效,更新缓存中用户socket信息的channelId字段为当前输入的channelId;查询数据库存储的历史消息记录,判断当前登录方用户ID(userId)是否有未推送消息记录,如果有则调用步骤S4进行文本和文件消息推送。
查询数据库存储的历史消息记录,是为了确定是否存在历史未推送消息记录,此处如果存在未推送消息记录,那么是在消息推送的步骤中,当前登录用户在过去有其他用户向他推送消息但是因为网路原因等断开了连接或者推出了登录,导致未成功推送。此时会在消息记录表中记录未成功推送的记录。
消息记录如果查询结果为空,表明socket连接无效,断开当前socket连接,从而避免无授权连接。
S4具体包括以下步骤:
401,判断消息记录的消息类型(消息推送前设置消息类型字段,消息类型字段标记文件消息或者文本消息),如果消息记录是文件消息,存储消息记录到数据库的文件消息表并设置下载状态为“未下载”,将所述文件消息转换为文本消息,执行步骤402,文件消息换为文本消息的转换字段包括:将消息内容设置为文件名称;接收方用户Id设置为文件拥有者,转换后增加扩展字段,扩展字段包括:文件存储Id和文件路径,扩展字段用于文件的接收;如果消息记录是文本消息,将消息读取状态设置为“未读取”,接收状态设置为“未接收”并将消息记录存储到数据库文本消息表。
402,根据消息接收方用户ID查询Redis是否存在用户socket信息,如果不存在,结束消息推送,如果存在,获取用户socket信息,执行步骤403;
步骤402以消息接收方用户ID作为key来查询Redis缓存是否存在记录;如果不存在记录,直接退出消息推送,保存的消息记录就是未成功推送的消息记录。
用户登录以后生成token,登录方用户ID与用户socket信息映射存储在Redis缓存中,此处是在消息推送的过程中,以接收方用户Id来查询用户socket信息是否存在,接收方用户Id是前述用户ID一种具体类型,接收方用户Id、登录方用户Id(发送方用户Id)都是用户Id,都会存储在Redis缓存中。
消息的发送方用户和接收方用户都会登录到平台,用户Id包括所有的平台用户,因为用户登录平台的时候还没有进行消息收发所以无法说明他是接收方还是发送方,所以用户Id统一标识。
403,获取用户socket信息中的channelId字段,判断channelId是否为空,如果为空,表明接收用户未连接,结束消息推送;如果channelId不为空,执行步骤404;
404,查询系统缓存哈希表channelMap中channelId是否存在,如果存在,获取当前消息推送处理器,传入消息内容进行消息推送。其中哈希表channelMap结构为:(channelId:消息推送处理器)。
S5具体包括以下步骤:
501,消息接收方客户端接收到文本消息的弹窗,更新数据库(与S4和S5中查询消息记录,保存消息记录的数据库相同,此处为更新消息记录状态字段),消息接收状态为“已接收”;读取消息后,更新数据库消息读取状态为“已读取”;
502,消息接收方客户端接收到文件消息,接收用户使用文件消息中的文件存储Id和文件路径完成文件预览和下载,用户下载文件后,下载状态更新为“已下载”。
步骤S6具体包括以下步骤:
以登录方用户ID查询Redis缓存中是否存在用户socket信息,如果存在用户socket信息,获取用户socket信息中token,分别删除Redis缓存中用户Id和token作为主键的用户socket信息。
相对于现有技术,本发明具有如下有益效果:
本发明提供了一种基于消息机制并应用于数字化业务的通知引擎,用户登录利用缓存中间件存储token,socket连接时进行token有效性判断从而避免无效socket连接导致的安全问题和网络资源浪费,通过用户token校验机制结合WebSocket协议,进行用户客户端socket连接有效性判断同时实现消息重推;通过消息体传入FastDFS文件存储路径等信息,同时实现重连接用户的消息重推,避免消息丢失;基于文件存储系统,支持文本类型消息和文件类型消息多种类型消息推送,实现文件消息推送,消息提示同时为用户提供文本信息通知和文件预览、下载功能。
步骤S1将文件上传到FastDFS存储,FastDFS具有冗余备份、负载均衡、线性扩容等机制,相比传统服务器作为更高可用、更高性能文件服务器集群提供文件上传、下载等服务,为数字化业务平台的消息引擎的对文件消息的发送和接受提供了基础。
步骤S2中token产生方法基于令牌主键字符串、系统当前时间戳和系统生成UUID产生,确保了token字符串的唯一性,并使用MD5摘要算法进行加密,确保了token的安全性。
步骤S3中,Redis缓存中同分别存储用户Id与socket信息映射、token与socket信息映射,同时确保了消息发送方用户连接有效性验证及消息推送中消息接收方用户是否已建立有效连接,从而同时确保消息发送发和接收方是否有效,避免无效的消息推送。
步骤S4使用token进行用户连接有效性判断从避免无效的连接浪费网络资源,使用用户Id查询是否有未推送消息从而进行消息重推,有效避免用户连接断开等情况导致的消息丢失。
步骤S5中,将文件消息转化为文本消息,使用统一的方法进行消息推送,支持两种消息类型的同时简化了消息推送方法,适配数字化业务平台多种类型消息推送。
本申请利用FastDFS存储系统,FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS能够搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请一种基于消息机制并应用于数字化业务的通知引擎的消息推送系统流程图;
图2为本申请一种基于消息机制并应用于数字化业务的通知引擎的文本和文件消息推送流程图。
具体实施方式
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动条件下所获得的所有其它实施例,都属于本发明保护的范围。
本发明的核心思想是根据眼底图像的自身特点,设计合适算法进行图像预处理增强,然后基于信息迁移眼底图像分割网络进行视网膜血管分割,最后使用结合有序分类的神经网络进行智能分析预测,以达到自动诊断阅片的目的。
本申请消息推送方式是基于WebSocket协议,是基于TCP的一种新的网络协议,它实现了浏览器与服务器全双工通信——允许服务器主动发送信息给客户端。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道,两者之间就直接可以数据互相传送。
Token是在服务端产生的一串字符串,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回Token给前端。前端可以在每次请求的时候带上Token证明请求的合法性。目前Token验证技术普遍用于软件平台用户接口授权校验中。
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
Redis是一个高性能的key-value缓存数据库,读取性能较高,使用与数据缓存和频繁读取,同时Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。
如图1所示,一种基于消息机制并应用于数字化业务的通知引擎,包括以下步骤:
S1,初始化数据库中消息记录,搭建FastDFS系统,存储文件到FastDFS系统;
S2,用户登录后,清除Redis缓存中保存的用户socket信息,生成token;将生成的token存储到Redis缓存中;Token是在服务端产生的一串字符串,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端返回Token给前端。前端在每次请求的时候带上Token证明请求的合法性。
将token和用户socket信息存储到缓存中间件Redis;用户socket信息包括登录方用户ID,token,channelId;
用户socket信息对象实体包含userId、token和channelId属性字段。
userId表示用户ID,用户ID包括登录方用户ID和接收方用户ID,是用户唯一标识,channelId表示客户端与服务器建立socket连接管道唯一标识,SocketUserInfo表示用户socket信息的对象实体。
当token产生以后,结合登录方用户ID和channelId(初始化为空)产生了用户socket信息。
存储到中间件Redis缓存的信息包括:用户Id与用户socket信息映射,token与用户socket信息映射,其中用户socket信息中也包括token。S3,客户端连接服务器,使用token进行socket连接有效性校验;
S4,控制服务器端将文本和文件消息推送消息接收方客户端;
S5,消息接收方客户端接收文本和文件消息,更新消息状态;
S6,用户退出登录,调用移除授权方法,删除Redis缓存中记录。
S1具体包括以下步骤:初始化数据库中消息记录,消息记录表初始化为空,消息发送者上传文件作为系统附件存储到FastDFS系统,返回文件存储ID和文件路径,文件存储ID和文件路径用于文件消息接收方用户查看文件消息时,对文件进行预览和下载;
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载),解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS能够搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
S2具体包括以下步骤:
201,基于移除用户授权方法,清除Redis缓存中保存的用户socket信息,生成token;
移除用户授权方法具体包括以下步骤:在Redis缓存以登录方用户ID为主键(key)查询是否存在用户socket信息,如果存在所述登录方用户ID的用户socket信息,获取用户socket信息中的token,分别删除Redis缓存中登录方用户Id和token作为主键的用户socket信息;
202,生成token初始字符串,token初始字符串包括令牌主键字符串、系统当前时间戳和UUID;UUID指统随机生成的通用唯一识别码,固定长度为32的字符串,并有唯一性。
203,对初始字符串使用MD5摘要算法生成32位长度token字符串。
Redis缓存中存储用户Id与用户socket信息映射,token与用户socket信息映射;Redis缓存数据结构为:
(userId:SocketUserInfo(userId,token,channelId))
(token:SocketUserInfo(userId,token,channelId))
其中,userId表示用户ID,userId表示用户ID,用户ID包括登录方用户ID和接收方用户ID,是用户唯一标识,channelId表示客户端与服务器建立socket连接管道唯一标识,SocketUserInfo表示用户socket信息的对象实体,用户socket信息对象实体包含userId、token和channelId三个属性字段。
S3具体包括以下步骤:
用户Socket连接时从Redis缓存中读取token(以token为key来查询redis缓存,判断是否存在key相同的token的记录,存在则表明用户授权登录连接有效),判断token是否有效,
判断token字符串是否有效具体包括以下步骤:
根据当前输入的token和channelId,查询Redis缓存中token对应用户socket信息是否存在;用户socket信息包括用户ID,token,channelId,用token为key查询Redis缓存中的用户socket信息;
如果查询结果不为空,表明当前socket连接有效,更新缓存中用户socket信息的channelId字段为当前输入的channelId;查询数据库存储的历史消息记录,判断当前登录方用户ID(userId)是否有未推送消息记录,如果有则调用步骤S4进行文本和文件消息推送。
查询数据库存储的历史消息记录,是为了确定是否存在历史未推送消息记录,此处如果存在未推送消息记录,那么是在消息推送的步骤中,当前登录用户在过去有其他用户向他推送消息但是因为网路原因等断开了连接或者推出了登录,导致未成功推送。此时会在消息记录表中记录未成功推送的记录。
消息记录如果查询结果为空,表明socket连接无效,断开当前socket连接,从而避免无授权连接。
如图2所示,S4具体包括以下步骤:
401,判断消息记录的消息类型(消息推送前设置消息类型字段,消息类型字段标记文件消息或者文本消息),如果消息记录是文件消息,存储消息记录到数据库(与S3查询消息记录的数据库相同,是关系型数据库PostgreSQL、MySQL等)的文件消息表并设置下载状态为“未下载”,将所述文件消息转换为文本消息,执行步骤402,文件消息换为文本消息的转换字段包括:将消息内容设置为文件名称;接收方用户Id设置为文件拥有者,转换后增加扩展字段,扩展字段包括:文件存储Id和文件路径,扩展字段用于文件的接收;如果消息记录是文本消息,将消息读取状态设置为“未读取”,接收状态设置为“未接收”并将消息记录存储到数据库文本消息表。
402,根据消息接收方用户ID查询Redis是否存在用户socket信息,如果不存在,结束消息推送,如果存在,获取用户socket信息,执行步骤403;
步骤402以消息接收方用户ID作为key来查询Redis缓存是否存在记录;如果不存在记录,直接退出消息推送,保存的消息记录就是未成功推送的消息记录。
用户登录以后生成token,登录方用户ID与用户socket信息映射存储在Redis缓存中,此处是在消息推送的过程中,以接收方用户Id来查询用户socket信息是否存在,接收方用户Id是前述用户ID一种具体类型,接收方用户Id、登录方用户Id(发送方用户Id)都是用户Id,都会存储在Redis缓存中。
消息的发送方用户和接收方用户都会登录到平台,用户Id包括所有的平台用户,因为用户登录平台的时候还没有进行消息收发所以无法说明他是接收方还是发送方,所以用户Id统一标识。
403,获取用户socket信息中的channelId字段,判断channelId是否为空,如果为空,表明接收用户未连接,结束消息推送;如果channelId不为空,执行步骤404;
404,查询系统缓存哈希表channelMap中channelId是否存在,如果存在,获取当前消息推送处理器,传入消息内容进行消息推送。其中哈希表channelMap结构为:(channelId:消息推送处理器)。
S5具体包括以下步骤:
501,消息接收方客户端接收到文本消息的弹窗,更新数据库(与S4和S5中查询消息记录,保存消息记录的数据库相同,此处为更新消息记录状态字段),消息接收状态为“已接收”;读取消息后,更新数据库消息读取状态为“已读取”;
502,消息接收方客户端接收到文件消息,接收用户使用文件消息中的文件存储Id和文件路径完成文件预览和下载,用户下载文件后,下载状态更新为“已下载”。
步骤S6具体包括以下步骤:
以登录方用户ID查询Redis缓存中是否存在用户socket信息,如果存在用户socket信息,获取用户socket信息中token,分别删除Redis缓存中用户Id和token作为主键的用户socket信息。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组间组合成一个模块或单元或组间,以及此外可以把它们分成多个子模块或子单元或子组间。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (7)
1.一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,包括以下步骤:
S1,初始化数据库中消息记录,搭建FastDFS系统,存储文件到FastDFS系统;
S2,用户登录后,清除Redis缓存中保存的用户socket信息,生成token;将生成的token存储到Redis缓存中;
S3,客户端连接服务器,使用token进行socket连接有效性校验;
S4,控制服务器端将文本和文件消息推送消息接收方客户端;
S5,消息接收方客户端接收文本和文件消息,更新消息状态;
S6,用户退出登录,调用移除授权方法,删除Redis缓存中记录;
S4具体包括以下步骤:
401,消息推送前设置消息类型字段,消息类型字段标记文件消息或者文本消息,判断消息记录的消息类型,如果消息记录是文件消息,存储消息记录到数据库的文件消息表并设置下载状态为“未下载”,将所述文件消息转换为文本消息,执行步骤402;
文件消息换为文本消息的转换字段包括:将消息内容设置为文件名称;接收方用户Id设置为文件拥有者,转换后增加扩展字段;
扩展字段包括:文件存储Id和文件路径,扩展字段用于文件的接收;如果消息记录是文本消息,将消息读取状态设置为“未读取”,接收状态设置为“未接收”并将消息记录存储到数据库文本消息表;
402,根据消息接收方用户ID查询Redis是否存在用户socket信息,如果不存在,结束消息推送,如果存在,获取用户socket信息,执行步骤403;
403,获取用户socket信息中的channelId字段,判断channelId是否为空,如果为空,表明接收用户未连接,结束消息推送;如果channelId不为空,执行步骤404;
404,查询系统缓存哈希表channelMap中channelId是否存在,如果存在,获取当前消息推送处理器,传入消息内容进行消息推送。
2.根据权利要求1所述的一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,
S1具体包括以下步骤:初始化数据库中消息记录,消息记录表初始化为空,消息发送者上传文件作为系统附件存储到FastDFS系统,返回文件存储ID和文件路径,文件存储ID和文件路径用于文件消息接收方用户查看文件消息时,对文件进行预览和下载。
3.根据权利要求1所述的一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,
S2具体包括以下步骤:
201,基于移除用户授权方法,清除Redis缓存中保存的用户socket信息,生成token;
移除用户授权方法具体包括以下步骤:在Redis缓存以登录方用户ID为主键查询是否存在用户socket信息,如果存在所述登录方用户ID的用户socket信息,获取用户socket信息中的token,分别删除Redis缓存中登录方用户Id和token作为主键的用户socket信息;
202,生成token初始字符串,token初始字符串包括令牌主键字符串、系统当前时间戳和UUID; UUID指统随机生成的通用唯一识别码,固定长度为32的字符串,并有唯一性;
203,对初始字符串使用MD5摘要算法生成32位长度token字符串。
4.根据权利要求3所述的一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,
Redis缓存中存储用户Id与用户socket信息映射,token与用户socket信息映射;Redis缓存数据结构为:
(userId: SocketUserInfo(userId,token,channelId))
(token: SocketUserInfo(userId,token,channelId))
其中,userId表示用户ID,用户ID包括登录方用户ID和接收方用户ID,是用户唯一标识,channelId表示客户端与服务器建立socket连接管道唯一标识,SocketUserInfo表示用户socket信息的对象实体,用户socket信息的对象实体包括userId、token和channelId三个属性字段。
5.根据权利要求1所述的一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,
S3具体包括以下步骤:
用户Socket连接时从Redis缓存中读取token,以token为key来查询redis缓存,判断是否存在key相同的token的记录,存在则表明用户授权登录连接有效,否则表明用户授权登录连接无效,
根据当前输入的token和channelId,查询Redis缓存中token对应用户socket信息是否存在;用户socket信息包括用户ID,token,channelId,用token为key查询Redis缓存中的用户socket信息;
如果查询结果不为空,表明当前socket连接有效,更新缓存中用户socket信息的channelId字段为当前输入的channelId;查询数据库存储的历史消息记录,判断当前登录方用户ID是否有未推送消息记录,如果有则进入步骤S4;
消息记录如果查询结果为空,表明socket连接无效,断开当前socket连接。
6.根据权利要求1所述的一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,
S5具体包括以下步骤:
501,消息接收方客户端接收到文本消息的弹窗,更新数据库,消息接收状态为“已接收”;读取消息后,更新数据库消息读取状态为“已读取”;
502,消息接收方客户端接收到文件消息,接收用户使用文件消息中的文件存储Id和文件路径完成文件预览和下载,用户下载文件后,下载状态更新为“已下载”。
7.根据权利要求1所述的一种基于消息机制并应用于数字化业务的通知引擎,其特征在于,
步骤S6具体包括以下步骤:
以登录方用户ID查询Redis缓存中是否存在用户socket信息,如果存在用户socket信息,获取用户socket信息中token,分别删除Redis缓存中用户Id和token作为主键的用户socket信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310067060.4A CN116055554B (zh) | 2023-02-06 | 2023-02-06 | 一种基于消息机制并应用于数字化业务的通知引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310067060.4A CN116055554B (zh) | 2023-02-06 | 2023-02-06 | 一种基于消息机制并应用于数字化业务的通知引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116055554A CN116055554A (zh) | 2023-05-02 |
CN116055554B true CN116055554B (zh) | 2024-05-31 |
Family
ID=86125712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310067060.4A Active CN116055554B (zh) | 2023-02-06 | 2023-02-06 | 一种基于消息机制并应用于数字化业务的通知引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116055554B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309683A (zh) * | 2018-10-30 | 2019-02-05 | 泰华智慧产业集团股份有限公司 | 基于token的客户端身份验证的方法及系统 |
CN112437078A (zh) * | 2020-11-20 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 文件存储方法、装置、设备及计算机可读存储介质 |
CN112612985A (zh) * | 2020-12-24 | 2021-04-06 | 广州致远电子有限公司 | 基于WebSocket的多用户和多类型消息的推送系统及方法 |
CN112968862A (zh) * | 2020-12-31 | 2021-06-15 | 南京联创互联网技术有限公司 | 一种基于redis的单点登录方法与装置 |
CN113839966A (zh) * | 2021-11-26 | 2021-12-24 | 北京慧点科技有限公司 | 一种基于微服务的安全管理系统 |
CN115004673A (zh) * | 2020-05-26 | 2022-09-02 | 深圳市欢太科技有限公司 | 消息推送方法、装置、电子设备及计算机可读介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150088982A1 (en) * | 2006-09-25 | 2015-03-26 | Weaved, Inc. | Load balanced inter-device messaging |
US9560035B2 (en) * | 2010-08-04 | 2017-01-31 | At&T Mobility Ii Llc | Systems, devices, methods and computer program products for establishing network connections between service providers and applications that run natively on devices |
US20150326517A1 (en) * | 2014-05-12 | 2015-11-12 | Ingenium Business Solutions, Inc. | System and method for delivering information via secure electronic messaging |
US10476978B2 (en) * | 2015-09-28 | 2019-11-12 | Facebook, Inc. | Providing notifications on online social networks |
-
2023
- 2023-02-06 CN CN202310067060.4A patent/CN116055554B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309683A (zh) * | 2018-10-30 | 2019-02-05 | 泰华智慧产业集团股份有限公司 | 基于token的客户端身份验证的方法及系统 |
CN115004673A (zh) * | 2020-05-26 | 2022-09-02 | 深圳市欢太科技有限公司 | 消息推送方法、装置、电子设备及计算机可读介质 |
CN112437078A (zh) * | 2020-11-20 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 文件存储方法、装置、设备及计算机可读存储介质 |
CN112612985A (zh) * | 2020-12-24 | 2021-04-06 | 广州致远电子有限公司 | 基于WebSocket的多用户和多类型消息的推送系统及方法 |
CN112968862A (zh) * | 2020-12-31 | 2021-06-15 | 南京联创互联网技术有限公司 | 一种基于redis的单点登录方法与装置 |
CN113839966A (zh) * | 2021-11-26 | 2021-12-24 | 北京慧点科技有限公司 | 一种基于微服务的安全管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116055554A (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5429912B2 (ja) | 認証システム、認証サーバ、サービス提供サーバ、認証方法、及びプログラム | |
CN110879903A (zh) | 证据存储方法、证据验证方法及装置、设备和介质 | |
US9225675B2 (en) | Data storage application programming interface | |
CN103038788B (zh) | 提供多个网络资源 | |
US8015253B1 (en) | System and method for controlling inter-device media exchanges | |
US20070038681A1 (en) | System and method of remote storage of data through connection from a server to a client | |
US9251317B2 (en) | Network video messaging | |
US20090037515A1 (en) | System and method for automatic transfer of data from one device to another | |
CN1973255A (zh) | 管理和传递软件更新的系统和方法 | |
US9479533B2 (en) | Time based authentication codes | |
US20190342753A1 (en) | Device configuration method, apparatus and system | |
CN112363991B (zh) | 区块链数据登记方法和装置 | |
US10558581B1 (en) | Systems and techniques for data recovery in a keymapless data storage system | |
CN110519240A (zh) | 一种单点登录方法、装置及系统 | |
CN112118269A (zh) | 一种身份认证方法、系统、计算设备及可读存储介质 | |
CN101854311A (zh) | 在web服务器上传递上下文信息的方法和装置 | |
JP2014503919A (ja) | インスタントメッセージング情報を伝送してフィルタにかけるためのシステムおよび方法 | |
CN102971739B (zh) | 利用强力证据保护帐户安全性设定 | |
US20100036892A1 (en) | Determination of an updated data source from disparate data sources | |
CN107547512B (zh) | 一种多级云平台中的用户认证方法和装置 | |
CN111200637B (zh) | 一种缓存的处理方法及装置 | |
WO2018118029A1 (en) | Authenticate a first device based on a push message to a second device | |
CN104348613A (zh) | 用户校验方法、装置及系统 | |
JP2014235720A (ja) | 情報開示システム、情報開示プログラム及び情報開示方法 | |
JP2020038438A (ja) | 管理装置、管理システム及びプログラム |
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 |