更新時間:2023年06月27日15時04分 來源:傳智教育 瀏覽次數(shù):
MQTT 是基于 發(fā)布(Publish)/訂閱(Subscribe) 模式來進行通信及數(shù)據(jù)交換的,與 HTTP 的 請求(Request)/應答(Response) 的模式有本質(zhì)的不同。
訂閱者(Subscriber) 會向 消息服務器(Broker) 訂閱一個 主題(Topic) 。成功訂閱后,消息服務器會將該主題下的消息轉(zhuǎn)發(fā)給所有的訂閱者。
主題(Topic)以 ‘/’ 為分隔符區(qū)分不同的層級。包含通配符 ‘+’ 或 ‘#’ 的主題又稱為 主題過濾器(Topic Filters); 不含通配符的稱為 主題名(Topic Names) 例如:
chat/room/1 sensor/10/temperature sensor/+/temperature $SYS/broker/metrics/packets/received $SYS/broker/metrics/#
'+': 表示通配一個層級,例如a/+,匹配a/x, a/y '#': 表示通配多個層級,例如a/#,匹配a/x, a/b/c/d 注: ‘+’ 通配一個層級,’#’ 通配多個層級(必須在末尾)。
發(fā)布者(Publisher) 只能向 ‘主題名’ 發(fā)布消息,訂閱者(Subscriber) 則可以通過訂閱 ‘主題過濾器’ 來通配多個主 題名稱。
會話(Session)
每個客戶端與服務器建立連接后就是一個會話,客戶端和服務器之間有狀態(tài)交互。會話存在于一個網(wǎng)絡之間,也可能在客戶端和服務器之間跨越多個連續(xù)的網(wǎng)絡連接。