在Node-Red中,我希望能够在HTTP输入节点和响应节点之间发送消息并使用MQTT等待其响应。我认为一张图片更能说明这一点:
问题是HTTP响应节点必须以某种方式直接链接到输入节点,所以我想在收到HTTP输入后将整个消息保存在上下文中,然后在发送响应之前将其恢复。问题是,显然,消息的结构是循环的,因此我不能直接将其转换为字符串,以将其存储在上下文中。
我尝试了不同的方法来解决这个问题(我看了一下:JSON.stringify, avoid TypeError: Converting circular structure to JSON我尝试使用circular-json模块,但两者都不起作用。)
答案 0 :(得分:1)
这有点打破了MQTT的异步性质,而Pub / Sub可以用它并不是它的优点。
如果没有响应消息,您必须考虑会发生什么,因为无法知道其他MQTT客户端是否已连接。
HTTP请求来自哪里?如果它来自网页,那么您可以使用MQTT over Websockets直接发出请求或使用普通的Websockets,从而不再需要HTTP调用。
说过你应该能够在上下文中存储msg
对象,不需要将它转换为字符串,因为默认的上下文存储引擎只是一个内存对象存储。因此,只需将对象添加到上下文中,并在响应进入时检索它。
您可以使用触发器节点执行某些操作来处理超时问题。