我如何区分源自用户的MQTT发布事件和仅用于广播的内部消息
我正在使用MOSQUITO mqtt客户端 例如,您有发布和订阅主题的用户。该主题实际上与REsT端点相关 场景1(典型的酒吧/酒吧用法)我如何区分源自用户的MQTT发布事件和仅用于广播的内部消息,mqtt,mosquitto,Mqtt,Mosquitto,我正在使用MOSQUITO mqtt客户端 例如,您有发布和订阅主题的用户。该主题实际上与REsT端点相关 场景1(典型的酒吧/酒吧用法) UserA订阅topic/device/123/meta UserB将一些数据发布到topic/device/123/meta 根据定义,此发布将广播给订阅者 我们订阅了一个/devices/#脚本,它知道如何在收到发布数据时保存主题/device/123/meta的有效负载。此数据将保存到数据库中 场景2 有人通过ReST接口(或直接DB更新,关键是它
- 根据定义,此发布将广播给订阅者
- 我们订阅了一个/devices/#脚本,它知道如何在收到发布数据时保存主题/device/123/meta的有效负载。此数据将保存到数据库中李>
- 数据库已更新
- 将发布消息发送到MQTT代理,以便所有订阅者都将更新作为有效负载
我该怎么处理?MQTT消息非常简单,我找不到任何逻辑基础。我正试图以某种方式使用原点进行探索,但目前为止运气不佳。我意识到我可以写插件,但这是莫斯奎托的任务 在纯MQTT协议级别无法区分来自订阅者的消息的来源。发布/订阅协议的一部分要点是将发布者与订阅者分离 实现这一点的最便捷的方法是向实际消息负载添加一个标志,以指示消息来自实际设备以外的其他地方 或者假设消息是作为数据库中的触发器的结果发布的,如果传入消息实际更改了数据库存储值,则进行触发器检查,如果传入消息与数据库的现有状态匹配,则无需重新发布它
Mosquitto的插件机制目前仅用于编写身份验证和授权解决方案,但JavaScript或Java代理支持可以做您想做的事情的插件。无法在纯MQTT协议级别区分来自订阅者的消息来源。发布/订阅协议的一部分要点是将发布者与订阅者分离 实现这一点的最便捷的方法是向实际消息负载添加一个标志,以指示消息来自实际设备以外的其他地方 或者假设消息是作为数据库中的触发器的结果发布的,如果传入消息实际更改了数据库存储值,则进行触发器检查,如果传入消息与数据库的现有状态匹配,则无需重新发布它 Mosquitto的插件机制目前仅用于编写身份验证和授权解决方案,但JavaScript或Java代理支持可以做您想做的事情的插件