mqtt - 如何使用 Mosquitto 创建 REST API,例如 arest.io
问题描述
我想创建像 arest.io 这样的云服务,以通过 REST API 访问 MQTT 代理(Mosquitto),就像在 cloud.arest.io 服务上一样。主要目标是在 mosquitto mqtt 代理和 apache2 http 服务器之间架起一座桥梁,以访问特定的 mqtt 主题,例如:
cloud.arest.io/47fd9g/digital/5/1
其中47fd9g/digital/5/1表示在“47fd9g”主题中发布“digital/5/1”。在 http 响应中,我可以从连接到“47fd9g”主题的 IoT 设备获取 JSON 数据。如果您曾经使用过 arest arduino 库和 arest.io 云,您就会明白我的意思。我有基于 ubuntu 的服务器,带有 apache、php、mosquitto、php、Mosquitto-PHP php 扩展。Mosquitto 在我的 IoT 设备上运行良好,但我不知道如何让 mosquitto 和 apache 像 arest.io 一样一起工作。
解决方案
正如您所描述的,您可以使用许多PHP MQTT 客户端来编写服务,但您不能直接将 apache 连接到 mosquitto。你将不得不写桥。
但是按照您的建议将数据编码到 URL 中并不能很好地工作,它假设主题只有一个级别的深度,这实际上不能很好地扩展并且不允许使用通配符。
最好有一个 HTTP POST 到http://example.com/some/multi/level/topic,将消息有效负载作为帖子的主体将发布到主题some/multi/level/topic
更有意义。
推荐阅读
- java - Java Drools - REST 调用超时 - 内存不足
- android - Robolectric + JaCoCo | 运行单元测试且未生成代码覆盖率时出现问题
- javascript - 材质 UI:选择已折叠,自动宽度不起作用
- timer - 在 STM32F4 中收集从脉冲上升沿到下降沿的 ADC 值(设置 ADC 转换次数)
- python - 从 numpy 数组生成的热图给出不准确的结果
- java - 在 Java 中使用 MapBinder 提供多个绑定
- angular - PWA SwUpdate checkForUpdate() 什么都不做
- android - [App Actions Test Tool] 为什么不支持快捷方式xml文件?
- architecture - 什么是主动-主动和主动-被动应用?
- r - 在长于 n 个字符的单词之间包含一个空格