MQTT5.0的CleanStart與SessionExpiryInterval是什么

這篇文章主要講解了“MQTT 5.0的Clean Start與Session Expiry Interval是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“MQTT 5.0的Clean Start與Session Expiry Interval是什么”吧!

在紅塔等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷,外貿(mào)網(wǎng)站建設(shè),紅塔網(wǎng)站建設(shè)費用合理。

MQTT v3.1.1 版本的 Clean Session

如果 Clean Session 設(shè)置為 0,服務(wù)端必須使用與 Client ID 關(guān)聯(lián)的會話來恢復(fù)與客戶端的通信。如果不存在這樣的會話,服務(wù)器必須創(chuàng)建一個新會話??蛻舳撕头?wù)器在斷開連接后必須存儲會話的狀態(tài)。

如果 Clean Session 設(shè)置為 1,客戶端和服務(wù)器必須丟棄任何先前的會話并創(chuàng)建一個新的會話。該會話的生命周期將和網(wǎng)絡(luò)連接保持一致,其會話狀態(tài)一定不能被之后的任何會話重用。

MQTT 5.0的Clean Start與Session Expiry Interval是什么

可以看出,MQTT 期望通過這種持久會話的機制避免客戶端掉線重連后消息的丟失,并且免去客戶端連接后重復(fù)的訂閱流程。這一功能在帶寬小,網(wǎng)絡(luò)不穩(wěn)定的物聯(lián)網(wǎng)場景中非常實用。但 Clean Session 同時限定了客戶端和服務(wù)器在連接和斷開連接兩種狀態(tài)下的行為,這并不是一個很好的實現(xiàn)。此外,在某些場景下會話并不需要服務(wù)器永久保留自己的狀態(tài)時,這個機制將會導(dǎo)致服務(wù)器資源的浪費。

MQTT v5.0 版本的 Clean Start 與 Session Expiry Interval

如果 CONNECT 報文中的 Clean Start 為 1,客戶端和服務(wù)端必須丟棄任何已存在的會話,并開始一個新的會話。

如果 CONNECT 報文中的 Clean Start 為 0 ,并且存在一個關(guān)聯(lián)此客戶端標(biāo)識符的會話,服務(wù)端必須基于此會話的狀態(tài)恢復(fù)與客戶端的通信。如果不存在任何關(guān)聯(lián)此客戶端標(biāo)識符的會話,服務(wù)端必須創(chuàng)建一個新的會話。

Session Expiry Interval 以秒為單位,如果 Session Expiry Interval 設(shè)置為 0 或者未指定,會話將在網(wǎng)絡(luò)連接關(guān)閉時結(jié)束。

如果 Session Expiry Interval 為 0xFFFFFFFF ,則會話永不過期。

如果網(wǎng)絡(luò)連接關(guān)閉時(DISCONNECT 報文中的 Session Expiry Interval 可以覆蓋 CONNECT 報文中的設(shè)置) Session Expiry Interval 大于0,則客戶端與服務(wù)端必須存儲會話狀態(tài) 。

MQTT 5.0的Clean Start與Session Expiry Interval是什么

現(xiàn)在,Clean Start 替代了原先的 Clean Session,但不再用于指示是否存儲會話狀態(tài),僅用于指示服務(wù)端在連接時應(yīng)該嘗試恢復(fù)之前的會話還是直接創(chuàng)建全新的會話。會話狀態(tài)在服務(wù)端的存儲時長則完全交給 Session Expiry Interval 決定。

前面還提到,MQTT v5.0 支持客戶端在斷開連接時重新指定 Seesion Expiry Interval。這樣我們可以非常容易地滿足類似客戶端網(wǎng)絡(luò)連接異常斷開時會話狀態(tài)被服務(wù)器保留,客戶端正常下線時會話則隨著連接關(guān)閉而結(jié)束的場景,只需要客戶端在斷開連接時將 Session Expiry Interval 設(shè)置為 0 即可。即便是一個已經(jīng)永不過期的會話,客戶端也可以在下一次連接中通過設(shè)置 Clean Start 為 1 來 "反悔"。

Clean Start 與 Session Expiry Interval 不僅解決了 Clean Session 的遺留問題,同時也擴展了客戶端的使用場景,使 MQTT 協(xié)議在受限的網(wǎng)絡(luò)環(huán)境下更加實用。

感謝各位的閱讀,以上就是“MQTT 5.0的Clean Start與Session Expiry Interval是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對MQTT 5.0的Clean Start與Session Expiry Interval是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

文章名稱:MQTT5.0的CleanStart與SessionExpiryInterval是什么
分享地址:http://muchs.cn/article26/ihipjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、定制開發(fā)靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、網(wǎng)站收錄品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)