MQTT协议是基于PUB/SUB的异步通信模式,不适用服务端同步控制设备端返回结果的场景。物联网平台基于MQTT协议制定了一套请求和响应的同步机制,无需改动MQTT协议即可实现同步通信。物联网平台提供RRpc接口给服务端,设备端仅需按照固定的格式回复PUB消息,服务端可同步获取设备端的响应结果。

名词解释

名词 说明
RRPC 是Revert-RPC的简称。RPC(Remote Procedure Call)是指采用客户机/服务器模式,您不需要了解底层技术协议,即可远程请求服务。RRPC则可以实现由服务端请求设备端,并能够使设备端响应的功能。
RRPC订阅Topic 设备端订阅RRPC消息时传递的Topic,含有通配符。
RRPC请求消息 物联网平台下发给设备端的消息。
RRPC响应消息 设备端回复给物联网平台的消息。
RRPC消息ID 物联网平台为每次RRPC调用,生成的唯一消息ID,可标识不同RRPC消息。

RRPC原理

RRPC

具体流程如下:

  1. 设备端订阅RRPC相关Topic。
  2. 用户服务器调用物联网平台的RRpc接口。
  3. 物联网平台收到服务器端RRPC调用请求,向设备下发一条RRPC请求消息。消息体为用户传入的数据,Topic为物联网平台定义的Topic,且携带RRPC消息ID。
  4. 设备收到下行消息后,按照指定Topic格式(包含之前物联网平台下发的唯一RRPC消息ID),回复一条RRPC响应消息给物联网平台。
  5. 物联网平台提取RRPC消息ID,和之前的RRPC请求消息匹配。
  6. 物联网平台将响应结果返回给用户服务器。
说明 调用RRpc接口时,可能出现以下情况:
  • 设备不在线,物联网平台会向用户服务器,返回设备离线的错误信息。
  • 设备未在超时时间(8秒)内回复RRPC响应消息,物联网平台会向用户服务器,返回超时的错误信息。

使用Topic

不同Topic格式使用方法不同:

RRPC调用实践示例,请参见远程控制树莓派服务器