在mqtt协议中,存在LTW(Last Will and
Testament)遗言机制,该机制只能捕捉客户端异常离线的通知,而无法获取正常通过disconnect断开连接的通知。

emqx 客户端离线通知处理 客户端上线通知

  • 服务端订阅离线topic(正常非正常都会收到)即可

  • 离线topic $SYS/brokers/+/clients/+/disconnected

  • 上线topic $SYS/brokers/+/clients/+/connected

  • 如果上下线都想收到消息 订阅这个topic $SYS/brokers/+/clients/#

  • 离线会受到的topic是
    $SYS/brokers/emqx@127.0.0.1/clients/xxxxx_642874/disconnected

修改etc/acl.conf 如果担心其他人非法获取离线消息,可以设置订阅权限

设置allow所有用户订阅$SYS/brokers/+/clients/#主题

{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.

{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.

{allow, all, subscribe, ["$SYS/brokers/+/clients/#"]}.

{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.

{allow, all}.

重新加载acl文件(或者重启emqx服务)

$ ./bin/emqx_ctl acl reload

vue客户端发送遗言消息
在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐