1. 程式人生 > >EMQ 學習---訂閱$SYS主題,捕獲客戶端上下線消息

EMQ 學習---訂閱$SYS主題,捕獲客戶端上下線消息

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主題,捕獲客戶端上下線消息