【技术实现步骤摘要】
基于WebSocket的多用户和多类型消息的推送系统及方法
本申请实施例涉及数据推送
,尤其涉及一种基于WebSocket的多用户和多类型消息的推送系统及方法。
技术介绍
WebSocket协议是物联网(IOT)系统中用于实现界面显示实时数据动态刷新,它使客户端和服务端的数据交换变得简单,允许服务器主动向客户端推送数据,只需完成一次握手,两者就可以创建持久性连接,并进行双向数据传输。现有的WebSocket协议只是定义了通信方式,正常使用情况下每个登录用户可以查看当前与当前登录用户创建、绑定设备的实时数据;登录用户被动接收设备全部数据;现有的通信方式可以满足一般的需求,但是在物联网(IOT)中,系统中包含有子用户管理的支持时,子用户无法直接订阅到主用户关联的设备数据;当较多设备、频繁上传数据时,WebSocket连接用户只能被动接收所有数据,导致收到过多无用数据,占用带宽和性能。
技术实现思路
本申请实施例提供一种基于WebSocket的多用户和多类型消息的推送系统及方法,以解决现有技术中WebSocket连接用户只能被动接收所有数据,导致收到过多无用数据,占用带宽和性能的问题。在第一方面,本申请实施例提供了一种基于WebSocket的多用户和多类型消息的推送系统,包括:客户端、网站服务器、WebSocket服务器和设备;所述客户端用于携带登录信息访问所述网站服务器;所述网站服务器用于对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端; >所述客户端还用于根据所述登录令牌访问所述WebSocket服务器;所述WebSocket服务器用于解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端;所述客户端还用于发送订阅信息到所述WebSocket服务器,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅状态到所述客户端;所述WebSocket服务器还用于接收到所述设备上传的设备事件数据时,根据所述订阅关系表将所述设备事件数据发送到对应的客户端。在第二方面,本申请实施例提供了一种基于WebSocket的多用户和多类型消息的推送方法,所述方法包括以下步骤:客户端携带登录信息访问网站服务器;所述网站服务器对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端;所述客户端根据所述登录令牌访问WebSocket服务器;所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端;所述客户端发送订阅信息到所述WebSocket服务器,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅状态到所述客户端;当所述WebSocket服务器接收到设备上传的设备事件数据,根据所述订阅关系表将所述设备事件数据发送到对应的客户端。进一步的,所述网站服务器对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端,包括:所述登录信息包括用户名和用户类型;所述网站服务器对所述用户名和所述用户类型进行验证,采用Nodejs模块对所述登录信息进行加密生成登录令牌,并将所述登录令牌发送到所述客户端。进一步的,所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端,包括:所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,若解析成功,则发送登录成功状态到所述客户端;若解析失败,则发送登录失败状态到所述客户端。进一步的,所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,若解析成功,则发送登录成功状态到所述客户端,包括:所述WebSocket服务器解析所述登录令牌后得到所述登录信息,将所述登录信息存储在Wss连接对象中,将所述客户端存储到Map对象中,缓存对应的键值,获得用户信息,并发送登录成功状态到客户端。进一步的,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅状态到所述客户端,包括:所述WebSocket服务器判断所述订阅信息是否与存储的设备信息相对应;若相对应,则将所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅成功状态到所述客户端;若不相对应,则发送订阅失败状态到所述客户端。进一步的,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅成功状态到所述客户端,包括:所述订阅信息包括设备列表和事件类型;所述WebSocket服务器将所述客户端的Wss连接对象、设备列表和事件类型生成订阅关系表存储在所述WebSocket服务器的内存数据库,并发送订阅成功状态到所述客户端。进一步的,所述当所述WebSocket服务器接收到设备上传的设备事件数据,根据所述订阅关系表将所述设备事件数据发送到对应的客户端,包括:当所述WebSocket服务器接收到设备上传的设备事件数据,根据设备列表与Wss连接对象的对应关系,查询所述设备关联的Wss连接对象,发送所述设备事件数据到所述Wss连接对象对应的客户端。在第三方面,本申请实施例提供了一种计算机设备,包括存储器以及一个或多个处理器;所述存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的基于WebSocket的多用户和多类型消息的推送方法。在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的基于WebSocket的多用户和多类型消息的推送方法。本申请实施例通过网站服务器对客户端生成登录令牌,客户端根据登录令牌登录WebSocket服务器后,WebSocket服务器接收客户端的订阅信息生成订阅关系表,当接收到设备上传的设备事件数据,根据订阅关系表将设备事件数据发送到对应的客户端;从而可选择性地订阅设备及设备上传的数据,支持子客户端查看母客户端绑定的设备数据,减少不必要的数据传输,避免接收到无用数据占用带宽和性能。附图说明图1是本申请实施例提供的现有的客户端与服务器的通信方式;图2是本申请实施例提供的一种基于WebSocket的多用户和多类型消息的推送系统及方法的示意图;图3是本申请实施例提供的一种基于WebSocket的多用户和多类型消息的推送方法的流程图;图4是本申请实施例提供的另一种基于WebSocket的多用户和多类型消息的推送方法的流程图;图5是本申请实施例提供的一种计算机设备的结构示意图。具体实施方式为了使本申请的目的、技本文档来自技高网...
【技术保护点】
1.一种基于WebSocket的多用户和多类型消息的推送系统,其特征在于,包括:客户端、网站服务器、WebSocket服务器和设备;/n所述客户端用于携带登录信息访问所述网站服务器;/n所述网站服务器用于对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端;/n所述客户端还用于根据所述登录令牌访问所述WebSocket服务器;/n所述WebSocket服务器用于解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端;/n所述客户端还用于发送订阅信息到所述WebSocket服务器,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅状态到所述客户端;/n所述WebSocket服务器还用于接收到所述设备上传的设备事件数据时,根据所述订阅关系表将所述设备事件数据发送到对应的客户端。/n
【技术特征摘要】
1.一种基于WebSocket的多用户和多类型消息的推送系统,其特征在于,包括:客户端、网站服务器、WebSocket服务器和设备;
所述客户端用于携带登录信息访问所述网站服务器;
所述网站服务器用于对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端;
所述客户端还用于根据所述登录令牌访问所述WebSocket服务器;
所述WebSocket服务器用于解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端;
所述客户端还用于发送订阅信息到所述WebSocket服务器,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅状态到所述客户端;
所述WebSocket服务器还用于接收到所述设备上传的设备事件数据时,根据所述订阅关系表将所述设备事件数据发送到对应的客户端。
2.一种基于WebSocket的多用户和多类型消息的推送方法,基于权利要求1所述的基于WebSocket的多用户和多类型消息的推送系统实现,其特征在于,所述方法包括以下步骤:
客户端携带登录信息访问网站服务器;
所述网站服务器对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端;
所述客户端根据所述登录令牌访问WebSocket服务器;
所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端;
所述客户端发送订阅信息到所述WebSocket服务器,所述WebSocket服务器将所述用户信息和所述订阅信息生成订阅关系表存储在内存数据库,并发送订阅状态到所述客户端;
当所述WebSocket服务器接收到设备上传的设备事件数据,根据所述订阅关系表将所述设备事件数据发送到对应的客户端。
3.根据权利要求2所述的基于WebSocket的多用户和多类型消息的推送方法,其特征在于,所述网站服务器对所述登录信息进行验证并生成登录令牌,将所述登录令牌发送到所述客户端,包括:
所述登录信息包括用户名和用户类型;
所述网站服务器对所述用户名和所述用户类型进行验证,采用Nodejs模块对所述登录信息进行加密生成登录令牌,并将所述登录令牌发送到所述客户端。
4.根据权利要求2所述的基于WebSocket的多用户和多类型消息的推送方法,其特征在于,所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,并发送登录状态到所述客户端,包括:
所述WebSocket服务器解析并处理所述登录令牌,以获取用户信息,若解析成功,则发送登录成功状态到所述客户端;若解析失败,则发送登录失败状态到所述客户端。<...
【专利技术属性】
技术研发人员:周立功,陈凡,
申请(专利权)人:广州致远电子有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。