MQTT作为RESTAPI的补充

MQTT作为RESTAPI的补充,rest,api,mqtt,Rest,Api,Mqtt,我有一个restapi,它从客户端接收一些信息(比如事件)。现在我需要从服务器向客户端发送一些信息。我正在尝试添加MQTT,作为客户端与服务器通信的另一种方式。与HTTP不同,MQTT允许我同时进行发送和接收,因此可以为所有现有REST API方法进行MQTT模拟 从客户端接收事件-HTTP,MQTT 向客户端发送命令-MQTT 我的想法是创建一个“监听器”,订阅所有“事件”MQTT主题,并将它们转换为对RESTAPI的HTTP请求(以保持组件解耦)。但是有一个问题:这个侦听器是一个简单的客户端

我有一个restapi,它从客户端接收一些信息(比如
事件
)。现在我需要从服务器向客户端发送一些信息。我正在尝试添加MQTT,作为客户端与服务器通信的另一种方式。与HTTP不同,MQTT允许我同时进行发送和接收,因此可以为所有现有REST API方法进行MQTT模拟

  • 从客户端接收
    事件-HTTPMQTT
  • 向客户端发送
    命令-MQTT
  • 我的想法是创建一个“监听器”,订阅所有“事件”MQTT主题,并将它们转换为对RESTAPI的HTTP请求(以保持组件解耦)。但是有一个问题:这个侦听器是一个简单的客户端。它没有任何特殊权限,并且在与RESTAPI对话时无法获取publisher的凭据以代表其行事。MQTT甚至不允许订阅者获取发布特定消息的人

    一种解决方案是仅使用MQTT将信息从服务器发送到客户端,并对所有传入请求继续使用RESTAPI。但这看起来很奇怪:)

    另一种方法是使用代理自定义挂钩,但并非所有代理都支持它,而且它不是MQTT规范的一部分,因此它不是非常可靠

    您知道如何以适当的方式组织它吗?

    鉴于大多数(如果不是全部)MQTT代理都支持ACL中的通配符主题,您可以在主题中对用户进行编码,然后授予代理访问匹配所有用户的通配符主题的权限

    e、 g

    发布到
    events/

    然后授予代理访问主题
    events/+


    然后,您可以确保用户ACL确保只有他们才能发布到
    事件/
    ,从而确保用户不能相互模拟。

    REST API需要JWT令牌。恐怕太长了,不能把它放在主题名称中。