MQTT EMQX v5.0版本监听客户端上下线通知、认证、授权

这篇具有很好参考价值的文章主要介绍了MQTT EMQX v5.0版本监听客户端上下线通知、认证、授权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前在自助洗车项目中使用emqx的是4.4版本,最新部署的时候采用了5.0。
旧版本认证、上下线通知等都需要开启插件,在配置文件修改,操作比较麻烦。
升级后增强了dashboard(web管理界面),好多插件都成为内置插件,无需开启,且很多操作无需进入配置文件,直接在web即可配置。

认证、授权(以mysql为例)

1.创建数据库、表

  1. 创建数据库(自定义数据库名)
  2. 创建认证表(mqtt_user)
CREATE TABLE `mqtt_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  `password_hash` varchar(100) DEFAULT NULL,
  `salt` varchar(35) DEFAULT NULL,
  `is_superuser` tinyint(1) DEFAULT 0,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
#@auth 157239486@qq.com
  1. 创建授权表(mqtt_acl)
CREATE TABLE `mqtt_acl` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `permission` varchar(5) NOT NULL,
  `action` varchar(9) NOT NULL,
  `topic` varchar(100) NOT NULL,
  INDEX username_idx(username),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 登录dashboard,访问控制-认证

emqx订阅上下线,MQTT,mysql,数据库,java,物联网

3.选择mysql,下一步,设置自己的mysql连接信息

一定要注意选择符合自己的 密码加密方式、加盐方式,在mysql设置密码的时候需要对应,否则会连接不上。

emqx订阅上下线,MQTT,mysql,数据库,java,物联网

4.授权跟认证类似,就不贴了

emqx订阅上下线,MQTT,mysql,数据库,java,物联网

EMQX客户端上线、下线通知(webhook)

1.数据集成-数据桥接-新建

emqx订阅上下线,MQTT,mysql,数据库,java,物联网

2. 设置webhook信息

其他默认即可,URL、请求体需要设置。EMQX如果和服务端在同一服务器上,可以写内网地址。

请求体一定要自己配置,按我这个格式就是发送客户端ID和event事件,后台服务端接收到根据客户端ID更新上下线状态

ps: 刚开始没有仔细看请求体,以为跟以前4.4版本一样,默认发送,无需设置,后来才发现需要自己按格式输入,导致在这浪费了几个小时。。。 默认的是请求体是${payload},导致我在后台转换json的时候一直报错。

emqx订阅上下线,MQTT,mysql,数据库,java,物联网

3.创建完成后会提示创建规则,或自行点击【数据集成-规则】

emqx订阅上下线,MQTT,mysql,数据库,java,物联网

4.选择【动作】-【添加动作】

动作就是检测到事件后要执行什么行为,比如上线后通知给web服务端,或者转发给其他主题
emqx订阅上下线,MQTT,mysql,数据库,java,物联网
emqx订阅上下线,MQTT,mysql,数据库,java,物联网

客户端上线完整数据(需要的时候${属性名} 提取)

{"username":"username11","timestamp":1671771784831,"sockname":"172.17.0.2:1883","receive_maximum":32,"proto_ver":4,"proto_name":"MQTT","peername":"127.0.0.1:62742","node":"emqx@172.17.0.2","mountpoint":"undefined","metadata":{"rule_id":"rule_kmld"},"keepalive":30,"is_bridge":false,"expiry_interval":7200,"event":"client.connected","connected_at":1671771784831,"conn_props":{"User-Property":{}},"clientid":"clientid111","clean_start":false}

下线数据只是这里有变化,“event”:“client.disconnected”

后台判断上下线Demo

/**
 * 在线状态更新
 *
 * @author Lion 157239486@qq.com
 * @since 1.0.0 2022-12-17
 */
	public void updateStatus(Map<String, Object> params) {
        String event = (String) params.get("event");
        String clientId = (String) params.get("clientId");
        if (event.equals("client.connected")) {
            editOnline(true, clientId);
        }

        if (event.equals("client.disconnected")) {
            editOnline(false, clientId);
        }
    }

写文不易,能看到这里给个star吧~文章来源地址https://www.toymoban.com/news/detail-708779.html

到了这里,关于MQTT EMQX v5.0版本监听客户端上下线通知、认证、授权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MQTT 客户端 MQTT.fx 使用说明

    官网:https://softblade.de/en/download-2/ 说明:最后的免费版本是 MQTT.fx 1.7.1,官网已经没有免费的版本 下载 MQTT.fx 1.7.1 https://nowjava.com/download/44364 【需关注其公众号才能下载】 一路 Next 即可 安装好后,直接启动MQTT.fx 点击第 1 步中界面设置按键(齿轮图标)打开新窗口创建一个

    2024年02月03日
    浏览(42)
  • Python MQTT客户端 paho-mqtt

    Python中MQTT Python有许多优秀的MQTT客户端,比较有代表性的有paho-mqtt、hbmqtt、gmqtt等,各有特色 paho-mqtt 有完善的官方文档,代码风格易于理解,目前新版本支持 MQTT 5.0 hbmqtt 使用 asyncio 库实现,可以优化网络 I/O 带来的延迟,但是代码风格不友好,文档较少,不支持 MQTT 5.0,主要后续

    2024年02月04日
    浏览(64)
  • mqtt服务器搭建与qt下的mqtt客户端实现

      MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(Io

    2024年02月06日
    浏览(89)
  • Android 实现MQTT客户端,用于门禁消息推送

    添加MQTT依赖 implementation ‘org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.2’ implementation ‘org.eclipse.paho:org.eclipse.paho.android.service:1.1.1’ 在Manifest清单文件中添加服务 MqttClient的实现方式 MQTT初始化连接线程,实现与服务器的连接、订阅、发布消息 MQTT重连 MQTT断开 发送消息 MqttAndroid

    2024年02月14日
    浏览(50)
  • C#MQTT编程07--MQTT服务器和客户端(wpf版)

    上篇完成了winform版的mqtt服务器和客户端,实现了订阅和发布,效果666,长这样  这节要做的wpf版,长这样,效果也是帅BBBB帅,wpf技术是cs程序软件的福音。  wpf的基础知识和案例项目可以看我的另一个专栏系列文章,这里直接干搞,开发环境依然是vs2022,.netframework 4.8,mq

    2024年01月17日
    浏览(67)
  • MQTT协议-发布消息(服务器向客户端发送)

    发布消息报文组成:https://blog.csdn.net/weixin_46251230/article/details/129414158 在了解了发布信息的PUBLISH报文后,就可以分析出阿里云服务器向本地客户端发送的报文数据了 实验前需要在阿里云创建产品和设备,并创建简单的温度和湿度物模型:https://blog.csdn.net/weixin_46251230/article/de

    2024年02月06日
    浏览(54)
  • MQTT 客户端出现连接订阅等问题时如何排查?

    大家好,这是一期社区专题 FAQ。我们整理了近期社区中关注度较高的问题,在这里进行统一汇总解答。 今后本系列内容将不定期推送,敬请关注。 同时,如果大家在使用 EMQX 的过程中遇到问题,欢迎通过以下方式进行解决: 查阅 EMQX 产品文档与博客文章。 如果在现有资料

    2023年04月20日
    浏览(38)
  • LuatOS-SOC接口文档(air780E)--mqtt - mqtt客户端

    常量 类型 解释 mqtt.STATE_DISCONNECT number mqtt 断开 mqtt.STATE_SCONNECT number mqtt socket连接中 mqtt.STATE_MQTT number mqtt socket已连接 mqtt连接中 mqtt.STATE_READY number mqtt mqtt已连接 订阅主题 参数 传入值类型 解释 string/table 主题 int topic为string时生效 0/1/2 默认0 返回值 返回值类型 解释 int 消息i

    2024年02月06日
    浏览(43)
  • 【Android】MQTT入门——服务器部署与客户端搭建

    MQTT(Message Queuing Telemetry Transport) 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽、和不稳定网络环境的物联网应用而设计,它可以用极少的代码为互联网设备提供实时可靠的消息服务。 MQTT 协议主要用于物联网和移动设备等资源有限的场景中,其中包括

    2024年02月04日
    浏览(79)
  • Python启动UDP服务,监听并接收客户端数据

    可以使用Python的socket库实现UDP协议的验证,以下是一个简单的示例代码: 服务器: 客户端 以上代码创建了一个UDP socket,并绑定到本地的IP和端口8888。接着使用 recvfrom() 方法接收数据,并使用 sendto() 方法发送数据。最后,关闭socket。 可以使用两个终端分别运行该程序,并观

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包