MQTT Wildcards(萬用字元)
透過 Wildcards 可以一次訂閱想要的主題,Wildcards 只能運用於 sub 不能用於 pub
myhome/ground/room/temperature
每一個 /
的兩邊,代表的兩個 topic level
Single Lever : + (單一層級萬用字元)
Single Level 是指取代此一層的主題(topic level),+
代表此 topic level 有著 single level wildcard 的特性
myhome/groundfloor/+/temperature
在此標誌下,以下均為相同的主題
1 |
|
以下為不相同的訂閱主題
1 |
|
ex2:
home/[position]/[devices]/temperature
: 訂閱’家中單一房間,單一個 device 的溫度’home/+/+/temperature
: 訂閱’家中所有房間中的裝置的溫度’
Multi Level :
Multi Level 總是放在最後 : myhome/groundfloor/#
以下為相同的主題
1 |
|
以下為不相同的主題
1 |
|
Topics beginning with $
這是系統預設的識別符,專門 publish 給系統,client 無法使用
注意
/
符號,別放在第一位,ex :/ex1/ex2
- 在 topic level 中,不要空白
- 保持你的 topic level 簡短與簡單明瞭
- 使用 ASC II 字符,並免使用無法印出的符號
- 透過在 topic level 中,使用 clientId,可有效區分『消息來源』與『訊息區別』
- client1 只能被授權 publish 透過
client1/status
,不被允許 publish 給client2/status
- client1 只能被授權 publish 透過
- 不使用
#
- 注意擴展性、延展性
- 使用特定的 topics,取代攏統的設定
- 使用
myhome/livingroom/temperature
,myhome/livingroom/brightness
與myhome/livingroom/humidity
,避免使用myhome/livingroom/
來接收所有的訊息
- 使用