【问题标题】:Sending message to some of the clients subscribed on same topic in MQTT向 MQTT 中订阅同一主题的一些客户端发送消息
【发布时间】:2018-10-08 15:36:12
【问题描述】:

是否有可能两个客户端订阅了 MQTT 代理中的同一主题。并且根据授权,一些消息会发送给一个客户,而不是其他客户(订阅同一主题)。

【问题讨论】:

    标签: mqtt


    【解决方案1】:

    没有

    可以为给定主题订阅任意数量的客户端,但您不能限制哪些客户端可以基于每条消息接收该主题的消息。要么全是主题,要么没有。

    【讨论】:

    • 哦,实际上,我正在开发 Azure IoT Hub,它允许您通过 MQTT 将 IoT 设备连接到集线器。并且任何服务器应用程序都可以在任何设备上调用方法。但是 azure 提供了单个主题来订阅以接收设备上的消息。该主题对于所有设备都是相同的。我不知道他们是如何让它工作的。
    • 这不是纯粹的 MQTT,微软一定扩展了他们的代理。
    • 虽然它不是纯MQTT代理,但它仍然适用于MQTT协议,所以你的意思是代理实现(服务器端)是这样的,它不像普通的MQTT代理那样工作。跨度>
    • 我说的差不多
    • 也值得指出。 MQTT 协议无法识别您希望接收消息的客户端,因此消息必须通过某种非 MQTT 机制提交给代理,这就是我说不可能的原因。
    【解决方案2】:

    这种方法没有直接的解决方案。但是,我对此解决方案有一个解决方法。

    假设您有两个具有 ClientId 的客户端:1 和 2 假设您的主题结构是:stackoverflow/data/{Client-ID}/sensor/ingress

    在定义授权参数时,您可以将权限声明为+/+/{Client-ID}/+/+

    这将确保主题结构保持不变,但同时,客户端将能够仅从他们自己的主题发布和订阅数据。(具有其客户端 ID 的主题)。

    【讨论】:

    • 在这种情况下,客户端不会订阅相同的主题,每个客户端都将订阅包含其客户端 ID 的主题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多