如何通过HTTP接口发布消息至客户端并将客户端的返回消息作为HTTP的响应

简单来说是实现HTTP与MQTT的协议转换,主要是这两个通信流程:

  1. 转发http的请求到客户端,然后等待客户端响应:HTTP请求 → EMQX服务器 → MQTT客户端
  2. 将客户端响应内容作为HTTP的响应进行HTTP请求的应答:MQTT客户端响应 → EMQX服务器 → HTTP响应数据

请问大家有没有插件可以实现上述功能,或者提供一些实现思路,感谢!

我想过用python做两个接口,接口A用来接收http请求,接口B接收webhook的消息推送。设计思路是接口A是并发的,接口B一个线程就行了,主要问题是接口B怎么把消息转到多线程的接口A上呢,用普通的线程通信感觉不合适

你的确需要用 Webhook 将设备返回的消息发送到你的服务。你的服务只需要开启一个 HTTP 监听,等待 EMQX 的 Webhook 回调。举例来说:

  1. 启动一个 HTTP 监听器,等待 POST http://my-python-host:my-port/my-path 的调用。此步骤需要用到 Python 的 REST API 框架,收到 HTTP 请求后回调你的函数。

  2. 在同一个程序内,调用 emqx 的 HTTP 消息发送接口。

  3. 客户端收到消息后通过发送消息到某个主题,触发 emqx 的 wenhook。

感觉只监听1个接口无法实现呢,webhook和http请求得格占用一个接口吧


图片更形象一点