EMQ 學習---訂閱$SYS主題,捕獲客戶端上下線消息
阿新 • • 發佈:2018-10-13
str 發出 .config 客戶端 ddr config文件 禁止 打開 dashboard
acl.config文件定義了可訂閱$SYS主題的權限。
{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}. {allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}. %%%{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}. {allow, all}.
acl.config文件第三行默認是禁止客戶端訂閱$SYS/#主題。我們把它註釋掉。開啟一個客戶端,訂閱$SYS/#主題,消息如下:
module(emqttd_broker)這個模塊,它會每秒鐘publish消息,主題關鍵字有uptime和datetime等。
module(emqttd_stats)這個模塊,它會每60秒鐘publish消息,把Ets表mqtt_stats的信息發出來。
module(emqttd_metrics)這個模塊,它的原理同上。
eg:
$SYS/brokers/[email protected]/uptime: qos=0
$SYS/brokers/[email protected]/sysdescr: qos=0
打開文件vm.args,把節點名稱修改為:
#-name [email protected] -name [email protected]
eg:
$SYS/brokers/[email protected]/uptime: qos=0
$SYS/brokers/[email protected]/sysdescr: qos=0
訂閱客戶端上下線的主題
具體某個節點的某個clientId方式的主題是:
$SYS/brokers/(node)/clients/(clientId)/connected $SYS/brokers/[email protected]/clients/861694030142478/connected $SYS/brokers/[email protected]/clients/861694030142478/disconnected
通配方式的主題是:
$SYS/brokers/+/clients/+/connected $SYS/brokers/+/clients/+/disconnected $SYS/brokers/+/clients/#
出於安全起見,我們把acl.config文件修改為:
允許客戶端訂閱"$SYS/brokers/+/clients/#"主題,但是禁止訂閱"$SYS/#"主題。
{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}.
EMQ 學習---訂閱$SYS主題,捕獲客戶端上下線消息