Kill Anxiety-MQTT通过遗嘱消息判断设备在线状态

MQTT遗嘱消息是确保设备意外断线时,能够向服务器发送最后状态的一种机制。通过预设遗嘱主题和内容,当设备因网络故障、设备掉电或权限问题断开连接时,服务器会接收到遗嘱内容,从而实时感知设备的离线状态。在本例中,使用MQTTX模拟客户端设置了遗嘱消息,并通过MQTT.fx作为服务器监听遗嘱主题,展示了遗嘱消息在设备异常断线时的即时传递效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遗嘱消息是 MQTT 为那些可能出现 意外断线 的设备提供的将 遗嘱 优雅地发送给第三方的能力。意外断线包括但不限于:

  • 因网络故障或网络波动,设备在保持连接周期内未能通讯,连接被服务端关闭
  • 设备意外掉电
  • 设备尝试进行不被允许的操作而被服务端关闭连接,例如订阅自身权限以外的主题等

当应用需要即时的感知设备下线状态时,可以使用 MQTT 遗嘱消息实现。

  1. 设备连接时,指定 遗嘱主题和遗嘱内容(可以将client id写到内容中,用于服务器判断接收的遗嘱消息来自哪个客户端)
  2. 服务端监听遗嘱主题,当设备意外断线时,服务端能立即收到遗嘱内容
  3. 设备端连接成功时,可以主动往遗嘱主题发布一条消息,标志设备上线

安装 EMQX

docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0

在客户端连接属性上设置遗嘱主题和内容

在这里插入图片描述

使用 MQTTX 软件模拟客户端,在连接属性上设定好遗嘱主题和内容。

本例中设定:

Last-Will Topic:online-status-change
Last-Will Payload:
{
   "clientId":"mqttx_3e826f48",
   "message":"I have lost",
   "status":"offline"
}

点击 Connect 按钮,发起正常连接。

服务器监听遗嘱主题

在这里插入图片描述

使用 MQTT.fx 模拟服务器端,监听遗嘱主题 online-status-change

点击 MQTTX 软件右侧顶部的关闭按钮,模拟客户端掉电异常断线。

观察 MQTT.fx 监听的 online-status-change 的主题,可以看到立即收到了设备的遗嘱内容(由Broker发出)。

服务器收到遗嘱内容,根据内容马上可以判断出设备掉线了。

资料:
https://www.emqx.io/docs/zh/v4.4/getting-started/install.html

MQTT 遗嘱消息(Will Message)的使用

MQTT 3.1.1 协议中文版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值