1.立项背景
起因是公司需要对接国内停车场闸机、小区人脸出入等设备,首先是考虑了emqt等平台,但因为需要大量的数据及数据隐私等问题,不能依托开源等类型的项目,在与经理商讨后,决定自己单独开发一个MQTT的代理。初始第一版本只支持MQTT3.11,且只有代理功能没有移动端,后期个人将其扩展支持为3.0,3.11及5.0同步添加了Android移动端。
2.项目功能及核心
主要用于硬件通信,包括ACL管理,认证管理,监控管理,服务器资源统计,主题消息统计
主题消息统计
包含当前消息接收与消息发布数据图表,启用线程总数,已连接客户端总数。
服务器资源
包含CPU,内存,硬盘实时数据。
监控管理
主要展示当前连接的客户端信息,包含用户名/客户端ID、连接状态、是否清除会话等信息及踢出连接操作
认证管理
主要对能连接到代理的用户进行管理。
ACL规则管理
针对用户或客户端ID对主题订阅权限的管理。
整体项目由个人单独开发与升级完成,后端使用了gogin+自编写的go-base库,后台使用vue3+element-plus+vue-router+axios,移动端使用kotlinCompose+retrofit2+okhttp3+pahoMqtt实现。
项目前期因公司项目急于上线,只开发了MQTT代理转发,用户管理,整体也只有一个相对简单的管理页面。
后期因出现各种莫名其妙的连接,才不得已添加了ACL规则管理,等到公司项目上线后,空闲时间完善了首页的统计页面,监控管理等内容,随后又开发了原生的AndroidAPP.