EMQ上下线消息订阅

很多时候我们的业务中需要监听设备是否上线,之前我们一直采用的两种方案,一种是设备客户端上线是自动发送一条消息;另一种是,找一个开源的服务器,通过源码监听。
最近发现EMQ的共同非常强大,会将系统信息封装成系统主题,所以我们只要订阅系统主题就可以接受到消息,
我订阅了:“$SYS/brokers/emq@127.0.0.1/clients/#”主题,其他论坛里说:“$SYS/brokers/emqttd@127.0.0.1/clients/#”当我尝试后者的时候收不到消息(查官方文档大部分也是emq@127.0.0.1),接受到上线信息的主题为:“$SYS/brokers/emq@127.0.0.1/clients/front02/connected
下线信息为:“$SYS/brokers/emq@127.0.0.1/clients/122/disconnected
坑一:disconnected和connected的结尾一样,都是connected,所以判断的时候一定要加上”/”topic.endsWith("/connected"),这样来匹配
坑二:这里默认只能通过127.0.0.1地址来连,所以,如果想用其他主机订阅系统消息的时候,通过修改etc/acl.conf文件,allow表示允许

%% 允许'dashboard'用户订阅 '$SYS/#'
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.
%% 允许ip地址127.0.0.1订阅和发布全部主题
{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.
%% 不允许所有用户订阅系统主题
{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.

我们可以将第二条改为:将xxx替换为你的IP地址,当然可以直接用all允许全部

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

EMQ还有很多强大功能,可以参考EMQ 的文档,http://emqtt.com/docs/v2/index.html,这里我也是从文档中看到的功能,不知道为何,EMQ的文章非常少

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值