for
1
版本emqx5.3,也已经在acl.conf文件中添加了{allow, all, subscribe, [“$SYS/brokers/+/clients/#”]}.但是在客户端(编写js代码模拟):// 当客户端连接到MQTT服务器时触发该回调函数
client.on(‘connect’, function () {
console.log(“connected”)
// 订阅特定的MQTT主题
client.subscribe(“$SYS/brokers/+/clients/+/connected”)
client.subscribe(“$SYS/brokers/+/clients/+/disconnected”)
});
// 当接收到MQTT消息时触发该回调函数
client.on(“message”, function (_, message) {
console.log(message.toString())
});运行后输出的只有connected,然后没有任何的信息,该怎么解决
for
4
如图原因已查明,
但是如何在dashboard修改这些参数的配置
- ACL权限不足
- 错误码 135 明确表示当前客户端没有订阅
$SYS/
系统主题的权限
- EMQX 默认禁止普通客户端订阅系统主题(安全考虑)
- 配置关键点
- 图片中客户端尝试订阅
$SYS/brokers/+/clients/+/connected
- QoS 设置为 0(非持久化订阅)
解决方案
1. 修改EMQX ACL配置
在 etc/plugins/emqx_auth_jwt.conf
中添加以下规则(或修改现有ACL):
auth.jwt.acl.rule.1 = {“permission”:“allow”,“username”:“jwt_user”,“topic”:“$SYS/#”}
auth.jwt.acl.rule.2 = {“permission”:“allow”,“clientid”:“IP1onic”,“topic”:“$SYS/#”}