断开连接回调触发时是否会走遗嘱的逻辑
- 只有在客户端“非正常”地断开连接时,Broker才会发布这个遗嘱消息。非正常断开的场景包括:
- 网络故障或I/O错误,导致TCP连接中断。
- 客户端意外断电或程序崩溃。
- 客户端在Keep Alive心跳周期内未能与Broker通信,被Broker判定为离线。
- 客户端没有先发送
DISCONNECT
报文就直接关闭了连接。 - 不会触发的条件: 如果客户端调用了
disconnect()
方法,向Broker发送了一个DISCONNECT
报文,这就属于正常断开。Broker收到后会认为客户端是主动、正常地离开,因此会丢弃之前存储的遗嘱消息,不会将其发布。