MQTT协议基于PUB/SUB的异步通信模式,不适用于服务端控制设备端并同步获取返回结果的场景。物联网平台基于MQTT协议给用户服务端提供了RRPC接口,实现用户服务端下发RRPC消息数据并同步等待设备响应数据。
名词解释
名词 | 说明 |
RRPC | 是Revert-RPC的简称。RPC(Remote Procedure Call)是指采用客户机/服务器模式,您不需要了解底层技术协议,即可远程请求服务。RRPC则可以实现由服务端请求设备端,并能够使设备端响应的功能。 |
RRPC订阅Topic | 设备端订阅RRPC消息时传递的Topic,含有通配符。 |
RRPC请求消息 | 物联网平台下发给设备端的消息。 |
RRPC响应消息 | 设备端回复给物联网平台的消息。 |
RRPC消息ID | 物联网平台为每次RRPC调用,生成的唯一消息ID,可标识不同RRPC消息。 |
RRPC原理
具体流程如下:
(可选)设备端订阅RRPC相关Topic。
物联网平台根据MQTT协议,仅定制了RRPC消息的请求和响应机制。设备端若要获取物联网平台下发的RRPC消息数据,并做应对处理,需要在设备端先订阅Topic,然后开发数据处理逻辑。
设备可通过发送SUB指令订阅指定Topic,实现从物联网平台获取消息。开发方法,请参见Link SDK中订阅Topic的代码示例。
在设备端开发处理RRPC消息数据的方法,请参见RRPC功能开发示例。
用户服务器调用物联网平台的RRpc接口。
物联网平台收到服务器端RRPC调用请求,向设备下发一条RRPC请求消息。消息体为用户传入的数据,Topic为物联网平台定义的Topic,且携带RRPC消息ID。
设备收到下行消息后,按照指定Topic格式(包含之前物联网平台下发的唯一RRPC消息ID),回复一条RRPC响应消息给物联网平台。
物联网平台提取RRPC消息ID,和之前的RRPC请求消息匹配。
物联网平台将响应结果返回给用户服务器。
(可选)设备对已订阅Topic的消息进行处理。
调用RRpc接口时,可能出现以下情况:
设备不在线,物联网平台会向用户服务器,返回设备离线的错误信息。
设备未在超时时间(8秒)内回复RRPC响应消息,物联网平台会向用户服务器,返回超时的错误信息。
使用Topic
不同Topic格式使用方法不同:
调用自定义Topic(推荐):将RRPC与自定义Topic结合,实现不同场景需求。
调用RRPC通信相关Topic:若您未使用自定义Topic,物联网平台系统会使用默认通信Topic进行通信,应用场景相对单一,不推荐使用。
RRPC调用实践示例,请参见远程控制树莓派服务器。