1. 程式人生 > >我的mqtt協議和emqttd開源專案個人理解(25)

我的mqtt協議和emqttd開源專案個人理解(25)

一、關於協議的問答

問:問個mqtt協議的問題,cleansession為什麼要區別0和1,他們各自的用途和應用場景是什麼?

答:為 1 的時候,伺服器每次session 都要重新建立,這也是大多數的場景使用情況;

為 0 的時候可以複用歷史的session, 服務端session 是有狀態的,可以記錄很多資訊。

為 0的時候就可以保留 session 了,這個保留的session 是有用的,如果服務端實現了的話,像歷史沒發出去的訊息等等,鑑權資訊,等等,可以接著使用。你可以類比我們登陸網頁的那個session,沒過期的話,可以不用登陸了

二、emq原始碼裡面,hook上下線流程

cleansession為0的時候,不好判斷裝置上下線,hook裡面的上下線,0和1流程大不相同