——本地多规约配置

概念与原理

多规约,即物联网设备的多种数据传输格式,每一种数据格式都会存在一套详细的规约来表述,作为开发人员,我们通过规约的表述,来解析和组装终端所认可的数据——纯粹个人理解。 网关是如何实现多规约呢?

  • 1.通过定位长度域在报文中的位置来实现多规约的兼容!
  • 2.通过为每一种规约分配固定的端口,保证同一端口连接同一规约类型的物理设备!当然,希望大家可以提供更多的实现多规约的思路,欢迎下方留言!
本地如何配置实现多规约
1.配置规则

2.如何配置

通过在iotGate.conf文件中的protocolType属性后增加相应配置,同一组配置之间逗号分隔,不同配置之间分号分隔!目前这种配置方式确实比较麻烦且容器出错,因此需要仔细一点,等到IOTGateConsole项目开发完成之后,可以通过配置页面完成相应配置,操作将更加容易!——IOTGateConsole项目码云地址为:https://gitee.com/willbeahero/IOTGateConsole 源码中的iotGate.conf文件中,自带了两中规约的匹配规则:

  • “1,0,-1,1,2,1,1,9811” 用于解析规约类型为1,长度域(2byte)偏移量为1,且长度域表示的值为自身字节数加上数据区字节数之和,分配端口为9811
  • “2,1,-1,0,4,0,0,9812” 用于解析规约类型2,长度域(4byte)偏移量为0,分配端口为9812

——控制台配置多规约

控制台多规约分为基础应用和高级应用 基础应用:通过配置定长长度域得各项参数,动态配置IOTGate得多规约支持--开源版已支持 高级应用:通过控制台,自定义长度域解析规则,实现非定长(如MQTT长度域)或有特殊含义长度域得处理!最终可以实现几乎所有物联网规约的全量兼容!——高级功能对于绝大部分学习的同学应该都用不到这些的,如果有该需求的厂家请联系作者,目前这部分代码暂时不开源了,请大家谅解!!

  • IOTGateConsole“规约维护”页面用于动态新增或删除规约 在这里插入图片描述
  • IOTGateConsole“规约维护”页面,用于关闭或启动规约,下拉框可以多选,选中的规约网关会开启相关解析,之前已经开启但本次不再下拉框中选中的规约,网关节点会自动停止未选规约的解析服务 在这里插入图片描述

为什么要配置多规约?

可能有的小伙伴会问,为什么需要这么麻烦去实现多规约,我本地使用netty或者用java socket的时候,直接将不同规约的报文传给服务端,服务端也可以正常接收啊?为什么IOTGate还需要我配置这么多东西? 有这种疑问的小伙伴,不妨试着让netty或者java socket的客户端(IOTGate中称之为物理设备)多开几个线程,且每个线程循环向服务端同时发送成百上千报文,观察一下,是不是会出现服务端收到的数据要么是几条相同的报文拼接成得一个长报文,要么收到的数据只有发送报文的一部分根本不是全部报文?这就是所谓的粘包/拆包问题。 配置多规约最主要的目的就是解决粘包和拆包问题,解决这些问题之后,才能保证网关发送到master的每一条报文都是完整的报文!

如果上面的你都看完了,那么赶快下载代码运行一下吧,也可以尝试自己创建一种格式的规约,然后通过配置iotGate.conf文件,让IOTGate实现对自己协议的支持!挺有意思的哦O(∩_∩)O