產(chǎn)品分類+
MQTT是什么?MQTT協(xié)議簡(jiǎn)介
MQTT
簡(jiǎn)介:MQTT由IBM公司開(kāi)發(fā),是一個(gè)即時(shí)通訊協(xié)議,也是一個(gè)物聯(lián)網(wǎng)傳輸協(xié)議,主要用于輕量級(jí)的訂閱/發(fā)布式的消息傳輸。其設(shè)計(jì)目的主要是為低帶寬和不穩(wěn)定網(wǎng)絡(luò)環(huán)境下的物聯(lián)網(wǎng)設(shè)備提供服務(wù)。
MQTT中的概念
訂閱(Subscribtion):
訂閱包含主題篩選器(Topic Filter)和最大服務(wù)質(zhì)量(QoS)。訂閱會(huì)與一個(gè)會(huì)話(Session)關(guān)聯(lián)。一個(gè)會(huì)話可以包含多個(gè)訂閱。每一個(gè)會(huì)話中的每個(gè)訂閱都有一個(gè)不同的主題篩選器。
會(huì)話(Session):
每個(gè)客戶端與服務(wù)器建立連接后就是一個(gè)會(huì)話,客戶端和服務(wù)器之間有狀態(tài)交互。會(huì)話存在于一個(gè)網(wǎng)絡(luò)之間,也可能在客戶端和服務(wù)器之間跨越多個(gè)連續(xù)的網(wǎng)絡(luò)連接。
主題名(Topic Name):
連接到一個(gè)應(yīng)用程序消息的標(biāo)簽,該標(biāo)簽與服務(wù)器的訂閱相匹配。服務(wù)器會(huì)將消息發(fā)送給訂閱所匹配標(biāo)簽的每個(gè)客戶端。
需要注意的是,MQTT中消息主題按照層級(jí)命名,使用 ‘/’ 進(jìn)行分割
此外,主題中可以使用通配符進(jìn)行多個(gè)主題或多層級(jí)的訂閱,有兩種常見(jiàn)的通配符:
1. 單層通配符 +:?jiǎn)螌油ㄅ浞荒芷ヅ湟粚拥闹黝},例如:China/Beijing/+,可以匹配的只有Beijing這個(gè)主題下面一層的主題,例如Xicheng, DongCheng, Xuanwu等等。
2. 多層通配符 #:顧名思義,多層通配符就是可以匹配多個(gè)層級(jí)的主題,例如:China/#,可以匹配到的主題可能有:China/Beijing/Dongcheng, China/Shanghai/PuDong,等等。
主題篩選器(Topic Filter):
一個(gè)對(duì)主題名通配符篩選器,在訂閱表達(dá)式中使用,表示訂閱所匹配到的多個(gè)主題。
負(fù)載(Payload):
消息訂閱者所具體接收的內(nèi)容。
MQTT中的角色
Publisher和Subscriber為客戶端,Broker為服務(wù)器端,消息主題為消息類型,Broker根據(jù)Topic過(guò)濾消息,并將消息向客戶端推送。
MQTT中用QoS表示服務(wù)質(zhì)量,MQTT協(xié)議中有三種服務(wù)質(zhì)量(QoS):
QoS =0,至多一次,可能會(huì)出現(xiàn)丟包的情況,使用在對(duì)實(shí)時(shí)性要求不高的情況,例如,將此服務(wù)質(zhì)量與通信環(huán)境傳感器數(shù)據(jù)一起使用。 對(duì)于是否丟失個(gè)別讀取或是否稍后立即發(fā)布新的讀取并不重要。
QoS =1,至少一次,保證包會(huì)到達(dá)目的地,但是可能出現(xiàn)重包。
QoS =2, 剛好一次,保證包會(huì)到達(dá)目的地,且不會(huì)出現(xiàn)重包的現(xiàn)象。
客戶端
Publisher和Subscriber都屬于客戶端。
發(fā)布應(yīng)用消息給其它相關(guān)的客戶端。
訂閱以請(qǐng)求接受相關(guān)的應(yīng)用消息。
取消訂閱以移除接受應(yīng)用消息的請(qǐng)求。
從服務(wù)端斷開(kāi)連接。
服務(wù)器端
服務(wù)器端即所謂的MQTT Broker服務(wù)器。
接受來(lái)自客戶端的網(wǎng)絡(luò)連接。
接受客戶端發(fā)布的應(yīng)用消息。
處理客戶端的訂閱和取消訂閱請(qǐng)求。
轉(zhuǎn)發(fā)應(yīng)用消息給符合條件的已訂閱客戶端。
MQTT提供的公共服務(wù)器端(Broker)有:
test.mosquitto.org
broker.hivemq.com
iot.eclipse.org