什么是RRPC
MQTT協(xié)議基于PUB/SUB的異步通信模式,不適用于服務(wù)端控制設(shè)備端并同步獲取返回結(jié)果的場景。物聯(lián)網(wǎng)平臺基于MQTT協(xié)議給用戶服務(wù)端提供了RRPC接口,實現(xiàn)用戶服務(wù)端下發(fā)RRPC消息數(shù)據(jù)并同步等待設(shè)備響應(yīng)數(shù)據(jù)。
名詞解釋
名詞 | 說明 |
RRPC | 是Revert-RPC的簡稱。RPC(Remote Procedure Call)是指采用客戶機/服務(wù)器模式,您不需要了解底層技術(shù)協(xié)議,即可遠(yuǎn)程請求服務(wù)。RRPC則可以實現(xiàn)由服務(wù)端請求設(shè)備端,并能夠使設(shè)備端響應(yīng)的功能。 |
RRPC訂閱Topic | 設(shè)備端訂閱RRPC消息時傳遞的Topic,含有通配符。 |
RRPC請求消息 | 物聯(lián)網(wǎng)平臺下發(fā)給設(shè)備端的消息。 |
RRPC響應(yīng)消息 | 設(shè)備端回復(fù)給物聯(lián)網(wǎng)平臺的消息。 |
RRPC消息ID | 物聯(lián)網(wǎng)平臺為每次RRPC調(diào)用,生成的唯一消息ID,可標(biāo)識不同RRPC消息。 |
RRPC原理
具體流程如下:
(可選)設(shè)備端訂閱RRPC相關(guān)Topic。
物聯(lián)網(wǎng)平臺根據(jù)MQTT協(xié)議,僅定制了RRPC消息的請求和響應(yīng)機制。設(shè)備端若要獲取物聯(lián)網(wǎng)平臺下發(fā)的RRPC消息數(shù)據(jù),并做應(yīng)對處理,需要在設(shè)備端先訂閱Topic,然后開發(fā)數(shù)據(jù)處理邏輯。
設(shè)備可通過發(fā)送SUB指令訂閱指定Topic,實現(xiàn)從物聯(lián)網(wǎng)平臺獲取消息。開發(fā)方法,請參見Link SDK中訂閱Topic的代碼示例。
在設(shè)備端開發(fā)處理RRPC消息數(shù)據(jù)的方法,請參見RRPC功能開發(fā)示例。
用戶服務(wù)器調(diào)用物聯(lián)網(wǎng)平臺的RRpc接口。
物聯(lián)網(wǎng)平臺收到服務(wù)器端RRPC調(diào)用請求,向設(shè)備下發(fā)一條RRPC請求消息。消息體為用戶傳入的數(shù)據(jù),Topic為物聯(lián)網(wǎng)平臺定義的Topic,且攜帶RRPC消息ID。
設(shè)備收到下行消息后,按照指定Topic格式(包含之前物聯(lián)網(wǎng)平臺下發(fā)的唯一RRPC消息ID),回復(fù)一條RRPC響應(yīng)消息給物聯(lián)網(wǎng)平臺。
物聯(lián)網(wǎng)平臺提取RRPC消息ID,和之前的RRPC請求消息匹配。
物聯(lián)網(wǎng)平臺將響應(yīng)結(jié)果返回給用戶服務(wù)器。
(可選)設(shè)備對已訂閱Topic的消息進(jìn)行處理。
調(diào)用RRpc接口時,可能出現(xiàn)以下情況:
設(shè)備不在線,物聯(lián)網(wǎng)平臺會向用戶服務(wù)器,返回設(shè)備離線的錯誤信息。
設(shè)備未在超時時間(8秒)內(nèi)回復(fù)RRPC響應(yīng)消息,物聯(lián)網(wǎng)平臺會向用戶服務(wù)器,返回超時的錯誤信息。
使用Topic
不同Topic格式使用方法不同:
調(diào)用自定義Topic(推薦):將RRPC與自定義Topic結(jié)合,實現(xiàn)不同場景需求。
調(diào)用RRPC通信相關(guān)Topic:若您未使用自定義Topic,物聯(lián)網(wǎng)平臺系統(tǒng)會使用默認(rèn)通信Topic進(jìn)行通信,應(yīng)用場景相對單一,不推薦使用。
RRPC調(diào)用實踐示例,請參見遠(yuǎn)程控制樹莓派服務(wù)器。