2017-07-31 84 views
0

在Node-Red中,我希望能夠使用MQTT發送消息並等待它的響應,位於http輸入節點和響應之間。我覺得畫面更加相關的解釋是:在Node-Red中處理HTTP請求中的MQTT通信

enter image description here

的問題是一個HTTP響應節點直接連接到輸入一個不知何故,我收到後想在現場保存整個消息的一個http輸入,然後在發送響應之前恢復它。問題是,顯然,消息的結構是循環的,因此我不能直接將其轉換爲字符串,以便將其存儲在上下文中。

我試過不同的事情來解決這個問題(我看了一下這個:JSON.stringify, avoid TypeError: Converting circular structure to JSON,我嘗試使用circular-json模塊,這兩個模塊都不起作用)。

您是否想過解決這個問題的其他解決方案?

謝謝!

回答

0

這有點打破了MQTT的異步性,而Pub/Sub可以被使用,這不是它的強項。

您必須考慮如果沒有響應消息會發生什麼情況,因爲無法知道其他MQTT客戶端是否已連接。

HTTP請求來自哪裏?如果它來自網頁,那麼您可以通過Websockets使用MQTT來直接發出請求,或者直接使用Websockets,從而不再需要HTTP調用。

話雖如此,你應該能夠將msg對象存儲在上下文中,不需要將其轉換爲字符串,因爲默認上下文存儲引擎只是內存對象存儲。因此,只需將對象添加到上下文中,並在響應進入時檢索它。

您可能可以使用觸發器節點來處理超時問題。

+0

感謝您的回覆!我不知道我可以簡單地將對象消息存儲在上下文中(我總是看到人們首先將它轉換成字符串,所以我甚至沒有想過嘗試其他的東西)。它解決了我的問題! 關於超時問題,我知道如何處理它,這不會是一個真正的問題。 再次感謝! – LeChocdesGitans