emqx 客户端离线通知处理 客户端上线通知
服务端订阅离线topic(正常非正常都会收到)即可
离线topic $SYS/brokers/+/clients/+/disconnected
上线topic $SYS/brokers/+/clients/+/connected
如果上下线都想收到消息 订阅这个
topic $SYS/brokers/+/clients/#
$SYS/brokers/emqx@127.0.0.1/clients/#
离线会受到的topic是 $SYS/brokers/emqx@127.0.0.1/clients/xxxxx_642874/disconnected
payload :map[clientid:xxx_642874 disconnected_at:1.603525402882e+12 reason:tcp_closed ts:1.603525402882e+12 username:undefined]
xxxx_642874这个为下线的clientID 可以通过这个来处理离线逻辑
emqx 官方文档
修改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}.