发明内容
针对现有技术中的上述不足,本发明提供的一种基于物联网MQTT协议的系统数据字典使用方法及系统在原有系统数据字典交互使用WebSocket协议方式基础上引入物联网MQTT消息协议,解决了传统前后端数据字典交互使用的实时性、可靠性和易用性问题。
为了达到上述发明目的,本发明采用的技术方案为:
本发明提供一种基于物联网MQTT协议的系统数据字典使用方法,包括如下步骤:
S1、将业务字典数据维护到字典表中,并根据业务字典数据为各浏览器页面订阅字典类型接收事件;
S2、建立MQTT客户端与MQTT服务端的通信连接;
S3、利用MQTT客户端从MQTT服务端订阅数据字典主题消息,并向MQTT服务端发布查询数据字典主题消息;
S4、利用MQTT服务端接收查询数据字典主题消息,并将数据字典主题消息传输至MQTT客户端;
S5、利用MQTT客户端接收数据字典主题消息,完成字典类型接收事件订阅;
S6、持续更新字典类型接收事件,并重复步骤S4和S5,完成基于物联网MQTT协议的系统数据字典使用。
本发明的有益效果为:本发明提供的基于物联网MQTT协议的系统数据字典使用方法,在原有系统数据字典交互使用WebSocket协议方式基础上引入物联网MQTT消息协议,在低宽带、高延迟环境下能够重连,并控制MQTT协议三种消息发布服务质量等级,来保证同步字典数据缓存实时可靠,通过完善客户端数据字典的事件订阅发布管理功能,让不同页面也能够实时同步显示缓存中的下拉框字典数据,使原本复杂的字典管理使用方式变得更简单。
进一步地,所述步骤S4包括如下步骤:
S41、利用MQTT服务端接收查询数据字典主题消息,并对字典表进行全表查询,得到字典数据;
S42、将字典数据按字典类型转化为键值对数据,并将键值对数据作为数据字典主题消息传输至MQTT客户端。
采用上述进一步方案的有益效果为:系统后端从MQTT服务端订阅接收到查询数据字典主题的消息指令后,会调用数据字典查询服务进行全表查询,并将查询返回的字典数据按字典类型转化为键值对形式通过MQTT服务端返回给订阅数据字典主题的MQTT客户端。
进一步地,所述键值对数据将字典类型作为对象的索引,并将字典数据项集合作为数据。
采用上述进一步方案的有益效果为:通过键值对的形式,利用索引能够高效获取自动数据项集合信息。
进一步地,所述步骤S5包括如下步骤:
S51、利用MQTT客户端接收数据字典主题消息,并将数据字典主题消息同步至浏览器缓存中;
S52、遍历得到数据字典消息中所有字典类型;
S53、根据字典类型,从浏览器缓存中获取各字典类型对应的字典数据项集合;
S54、将字典数据项集合发布并一一传递至浏览器中订阅了对应字典类型的各页面显示,完成字典类型接收事件订阅。
采用上述进一步方案的有益效果为:系统前端接收到订阅数据字典主题的消息后同步至浏览器缓存中,并遍历消息内数据对象的所有字典类型,将获取到的对应字典数据项集合,发布传递给各个页面内订阅的字典类型事件。
进一步地,所述步骤S6包括如下步骤:
S61、持续通过调整浏览器页面的业务字典数据更新查询数据字典主题消息内容,完成持续更新字典类型接收事件;
S62、重复步骤S4和步骤S5,将更新后的字典数据项集合发布并一一传递至浏览器中订阅了对应字典类型的各页面显示,完成基于物联网MQTT协议的系统数据字典使用。
采用上述进一步方案的有益效果为:系统后端在执行完数据字典更新服务后,会调用数据字典查询服务按照字典类型条件进行过滤筛选查询,将更新的字典数据实时同步至前端浏览器缓存中,整个订阅事件接收的字典数据都会与页面组件动态绑定显示。
本发明还提供一种基于物联网MQTT协议的系统数据字典使用方法的系统,包括:
事件订阅模块,用于将业务字典数据维护到字典表中,并根据业务字典数据为各浏览器页面订阅字典类型接收事件;
通信连接模块,用于建立MQTT客户端与MQTT服务端的通信连接;
字典查询模块,用于利用MQTT客户端从MQTT服务端订阅数据字典主题消息,并向MQTT服务端发布查询数据字典主题消息;
字典回复模块,用于利用MQTT服务端接收查询数据字典主题消息,并将数据字典主题消息传输至MQTT客户端;
订阅完成模块,用于利用MQTT客户端接收数据字典主题消息,完成字典类型接收事件订阅;
订阅更新模块,用于持续更新字典类型接收事件,并通过字典回复模块利用MQTT服务端接收查询数据字典主题消息,并将数据字典主题消息传输至MQTT客户端,以及通过订阅完成模块利用MQTT客户端接收数据字典主题消息,完成字典类型接收事件订阅,完成基于物联网MQTT协议的系统数据字典使用。
本发明的有益效果为:本发明提供的基于物联网MQTT协议的系统数据字典使用方法的系统为上述基于物联网MQTT协议的系统数据字典使用方法对应设置的系统,用于实现基于物联网MQTT协议的系统数据字典使用方法。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
本发明实施例中相关技术术语:
物联网:物联网是指通过信息传感设备,按约定的协议,将任何物体与网络相连接,物体通过信息传播媒介进行信息交换和通信,以实现智能化识别、定位、跟踪、监管等功能。
数据字典:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述。简而言之,数据字典是描述系统中使用的所有数据元素的信息集合,它定义了数据元素的结构类型、重复的数据项以及可选的数据项等。建立数据字典有以下几个目的:
(1)、提高开发效率,降低研制成本;数据字典是数据库开发者、数据监管人和用户之间的共同约定,是系统说明书的一个重要组成部分,一个统一的数据字典有助于开发者建立数据模型以及程序和数据库之间的数据转换接口,为规范化设计和实施数据管理系统铺平了道路;(2)、促进数据共享,提高数据的使用效率;通过数据字典,用户可以方便地知道每项数据的意义,了解数据的来源和使用方法,从而帮助用户迅速地找到所需的信息,并按照正确的方法使用数据;(3)、控制数据的使用;在某些特定的场合,可以通过对数据字典的控制达到控制数据使用的目的;
MQTT协议:MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的协议;MQTT协议是一种轻量级的二进制协议,它比HTTP协议传输的数据包开销更小,更容易进行网络传输。它具有以下主要的几项特性:
(1)、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;(2)、对负载内容屏蔽的消息传输;(3)、使用 TCP/IP 提供网络连接;(4)、有三种消息发布服务质量等级;(5)、小型传输,开销很小,协议交换最小化,以降低网络流量;(6)、有完善的客户端异常中断机制。
WebSocket协议:WebSocket是一种在单个TCP连接上进行全双工通信的协议。以前很多网站为了实现推送技术,所用的技术都是轮询。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源。在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
web管理系统:这里指运行在电脑浏览器端的管理系统。
实施例1
如图1所示,在本发明的一个实施例中,本发明提供一种基于物联网MQTT协议的系统数据字典使用方法,包括如下步骤:
S1、将业务字典数据维护到字典表中,并根据业务字典数据为各浏览器页面订阅字典类型接收事件;
S2、建立MQTT客户端与MQTT服务端的通信连接;
S3、利用MQTT客户端从MQTT服务端订阅数据字典主题消息,并向MQTT服务端发布查询数据字典主题消息;
S4、利用MQTT服务端接收查询数据字典主题消息,并将数据字典主题消息传输至MQTT客户端;
所述步骤S4包括如下步骤:
S41、利用MQTT服务端接收查询数据字典主题消息,并对字典表进行全表查询,得到字典数据;
S42、将字典数据按字典类型转化为键值对数据,并将键值对数据作为数据字典主题消息传输至MQTT客户端;
所述键值对数据将字典类型作为对象的索引,并将字典数据项集合作为数据;
S5、利用MQTT客户端接收数据字典主题消息,完成字典类型接收事件订阅;
所述步骤S5包括如下步骤:
S51、利用MQTT客户端接收数据字典主题消息,并将数据字典主题消息同步至浏览器缓存中;
S52、遍历得到数据字典消息中所有字典类型;
S53、根据字典类型,从浏览器缓存中获取各字典类型对应的字典数据项集合;
S54、将字典数据项集合发布并一一传递至浏览器中订阅了对应字典类型的各页面显示,完成字典类型接收事件订阅;
S6、持续更新字典类型接收事件,并重复步骤S4和S5,完成基于物联网MQTT协议的系统数据字典使用;
所述步骤S6包括如下步骤:
S61、持续通过调整浏览器页面的业务字典数据更新查询数据字典主题消息内容,完成持续更新字典类型接收事件;
S62、重复步骤S4和步骤S5,将更新后的字典数据项集合发布并一一传递至浏览器中订阅了对应字典类型的各页面显示,完成基于物联网MQTT协议的系统数据字典使用。
本发明的有益效果为:本发明提供的基于物联网MQTT协议的系统数据字典使用方法,在原有系统数据字典交互使用WebSocket协议方式基础上引入物联网MQTT消息协议,在低宽带、高延迟环境下能够重连,并控制MQTT协议三种消息发布服务质量等级,来保证同步字典数据缓存实时可靠,通过完善客户端数据字典的事件订阅发布管理功能,让不同页面也能够实时同步显示缓存中的下拉框字典数据,使原本复杂的字典管理使用方式变得更简单。
实施例2
如图2所示,在本发明的另一个实施例中,本发明提供一种基于物联网MQTT协议的系统数据字典使用方法的系统,包括:
事件订阅模块,用于将业务字典数据维护到字典表中,并根据业务字典数据为各浏览器页面订阅字典类型接收事件;
通信连接模块,用于建立MQTT客户端与MQTT服务端的通信连接;
字典查询模块,用于利用MQTT客户端从MQTT服务端订阅数据字典主题消息,并向MQTT服务端发布查询数据字典主题消息;
字典回复模块,用于利用MQTT服务端接收查询数据字典主题消息,并将数据字典主题消息传输至MQTT客户端;
订阅完成模块,用于利用MQTT客户端接收数据字典主题消息,完成字典类型接收事件订阅;
订阅更新模块,用于持续更新字典类型接收事件,并通过字典回复模块利用MQTT服务端接收查询数据字典主题消息,并将数据字典主题消息传输至MQTT客户端,以及通过订阅完成模块利用MQTT客户端接收数据字典主题消息,实现字典类型接收事件订阅,完成基于物联网MQTT协议的系统数据字典使用。
实施例提供的基于物联网MQTT协议的系统数据字典使用方法的系统可以执行上述方法实施例基于物联网MQTT协议的系统数据字典使用方法所示的技术方案,其实现原理与有益效果类似,此处不再赘述。
本发明实施例中,本申请可以根据基于物联网MQTT协议的系统数据字典使用方法进行功能单元的划分,例如可以将各个功能划分为各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成单元既可以采用硬件的形式来实现,也可以采用软件功能单元的形式来实现。需要说明的是,本发明中对单元的划分是示意性的,仅仅为一种逻辑划分,实际实现时可以有另外的划分方式。
本发明实施例中,基于物联网MQTT协议的系统数据字典使用方法的系统为了实现基于物联网MQTT协议的系统数据字典使用方法的原理与有益效果,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本发明所公开的实施例描述的各示意单元及算法步骤,本发明能够以硬件和/或硬件和计算机软件结合的形式来实现,某个功能以硬件还是计算机软件驱动的方式来执行,取决于技术方案的特定应用和设计约束条件,可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
实施例3
如图3所示,在本发明的一个实用实例中,本发明提供的基于物联网MQTT协议的系统包括前端和后端,即数据字典客户端和数据字典服务端;
所述数据字典客户端包括MQTT客户端,能够实现缓存管理与事件管理;
所述数据字典服务端包括MQTT服务端,能够实现查询服务和更新服务;
所述数据字典客户端向数据字典服务端订阅字典类型接收事件,则数据字典服务端向数据字典客户端返回数据字典主题消息;
前端使用了MQTT.js作为连接MQTT的客户端;所述缓存管理在浏览器sessionStorage对象中缓存管理字典数据;所述事件管理能够实现订阅字典类型消息事件和发布字典类型消息事件;
所述订阅字典类型事件是在事件管理主题数组中存储各个页面订阅事件的字典类型回调方法,如果同时订阅了多个字典类型就遍历递归存储;所述发布字典类型消息事件是将消息回传给事件管理主题数组中对应字典类型的回调方法进行业务处理,如果对应多个回调方法,就遍历执行多次;
本实施例后端服务通过java开源框架实现;
将业务字典数据维护到字典表中;所述字典表的字典类型和字典项分别如表1和表2所示:
表1
列名 |
数据类型 |
主键 |
允许空 |
默认值 |
说明 |
id |
varchar |
是 |
否 |
|
记录ID(唯一) |
type_code |
varchar |
|
否 |
|
字典类型代码 |
type_name |
varchar |
|
否 |
|
字典类型名称 |
is_use |
tinyint |
|
|
|
使用状态 |
update_time |
timestamp |
|
|
CURRENT_TIMESTAMP |
数据更新时间 |
表2
列名 |
数据类型 |
主键 |
允许空 |
默认值 |
说明 |
id |
varchar |
是 |
否 |
|
记录ID(唯一) |
type_id |
varchar |
|
否 |
|
字典类型id |
code |
varchar |
|
否 |
|
字典项代码 |
name |
varchar |
|
否 |
|
字典项名称 |
update_time |
timestamp |
|
|
CURRENT_TIMESTAMP |
数据更新时间 |
当用户性别需要交互使用时,其维护到字典表中的储存数据结构如表3和表4所示:
表4
id |
type_code |
type_name |
is_use |
update_time |
type_1 |
sex |
性别 |
1 |
2021-11-21 |
表5
id |
type_code |
code |
name |
update_time |
item_1 |
type_1 |
1 |
男 |
2021-11-21 |
item_2 |
type_1 |
2 |
女 |
2021-11-21 |
item_3 |
type_1 |
3 |
未知 |
2021-11-21 |
系统前端通过MQTT客户端与MQTT服务端建立通信连接,连接成功后从MQTT服务端订阅数据字典主题消息,订阅完毕后立即向MQTT服务端发布查询数据字典主题的消息。
MQTT客户端与MQTT服务端连接说明:web系统浏览器环境中使用MQTT协议需要与服务器建立TCP长连接,在WebSocket通道上使用MQTT协议进行通信,即MQTT overWebSocket。浏览器端开源的MQTT客户端有Paho.MQTT、MQTT.js等,基于跨平台易修改的原则,本实施例使用了MQTT.js作为客户端,然后对客户端连接实例参数及回调事件进行封装,添加了数据字典的前端页面订阅发布事件机制(类似Vue框架发布订阅事件机制),实现了整个数据字典业务的实时同步功能。
利用MQTT服务端接收查询数据字典主题消息,并对字典表进行全表查询,得到字典数据;将字典数据按字典类型转化为键值对数据,并将键值对数据作为数据字典主题消息传输至MQTT客户端。性别字典按照性别类型转换的数据格式如下:
Sex:[{code:”1”,name:”男”},{code:”2”,name:”女”},{code:”3”,name:”未知”}];
0:{code:”1”,name:”男”}
1:{code:”2”,name:”女”}
2:{code:”3”,name:”未知”};
利用MQTT客户端接收数据字典主题消息,并将数据字典主题消息同步至浏览器缓存中;遍历得到数据字典消息中所有字典类型;根据字典类型,从浏览器缓存中获取各字典类型对应的字典数据项集合;将字典数据项集合发布并一一传递至浏览器中订阅了对应字典类型的各页面显示,完成字典类型接收事件订阅。向各浏览器页面发表性别字典类型数据如下所示:
>emitMessage(”sex”,[{‘1’:‘男’},{‘2’:‘女’},{‘3’:‘未知’}])
持续通过调整浏览器页面的业务字典数据更新查询数据字典主题消息内容,将更新的字典数据实时同步至前端浏览器缓存中,并通过各个页面的订阅发布事件机制实时同步显示到前端页面组件上完成持续更新字典类型接收事件。浏览器页面接收性别字典类型数据动态显示的情况如图4所示。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。