它有点尴尬,但是它可以工作。
由于MQTT在整个IoT中被广泛使用,我想知道是否有为了互操作性而试图标准化此RPC类型交互的尝试吗?
#1 楼
我不知道有任何这样的标准。正如在另一个问题的答案中指出的那样,pub / sub并不适合RPC,但可以弯曲以适应。
MQTT的优势之一是有效载荷可以是任何东西,从而使开发人员可以为他们的项目做出最佳选择。
#2 楼
我不确定您对MQTT上的标准化RPC通信方法有什么要求,但是我仍然进行了一些搜索,发现有几点可以提供给您。首先,关于标准方法。在一个Github的rpc项目上,描述的内容很完善:
该模块为mqtt连接提供了一个rpc接口,实质上这是一种使用MQTT主题结构的请求和响应策略。
重点是使用堆栈模型(OSI模型是标准),而仅将MQTT用作堆栈的层之一。
该项目在mqtt上的json-rpc上使用MQTT上的标准化协议或至少众所周知的协议。
关于尴尬,您不必从头开始构建MQTT和RPC,而可以使用以下方法之一链接的库或在Github上找到的其他库。
好吧,每种语言在Github上都没有现成的基础,但是在这种情况下,合规性成为计划标准,并且可能会影响整个其他项目。 。
评论
我没有真正的要求。该问题的推动力是将CoAP(具有RFC定义的请求/响应和pub / sub机制)与MQTT进行比较,我可以确定,MQTT现在只有标准化的pub / sub。当然,拥有一些用于RPC的开源库总比没有好。
–克里斯·斯坦巴赫
17年9月19日在18:48
#3 楼
Azure IoT中心具有直接方法的概念:IoT中心使您能够从云中调用设备上的直接方法。
这是通过MQTT实现的(不支持AMQP),其中
设备接收有关MQTT主题的直接方法请求:
$iothub/methods/POST/{method name}/?$rid={request id}.
他们已将其包装在他们的SDK中,因此开发人员无需担心专门监视该主题。您可以实现类似的方法。
根据其他答案,pub-sub并不适合RPC,据我所知没有任何标准。
更多文档在这里。
评论
刚刚发现,这可能是答案的基础:e-s-r.net/download/specification/ESR030-LWM2M-MQTT-1.0-A.pdf。不可否认,没有将通用请求/响应规范与LWM2M紧密耦合。