[英]How to update ExpressJS server's response to POST request after a timeout
我正在使用Node.js和ExpressJS對服務器進行編碼。
問題是,在某些情況下,客戶端將發送POST請求告訴服務器使某些外部設備向上或向下移動。
我希望服務器發送對該POST請求的初始響應,說該設備正在移動。 設備停止時,它將把該信息發送到服務器。 然后,我想更改響應的主體,以便說設備已停止。
在對一個POST請求的一個響應的上下文中,這可能嗎?
現在,我已經准備了一些我想完成的模擬代碼。 setTimeout
函數模擬設備運動。 超時的結束“模擬”設備停止移動(即設備一直向上移動)
res.send("MOVING");
setTimeout(function () {
if (req.body.direction === "UP") {
res.send("OPENED");
} else {
res.send("CLOSED");
}
}, 1000);
我知道res.send()
確實終止了服務器和客戶端之間的連接。 它被放置在那里只是為了更好地可視化我想要完成的工作。 我認為ExpressJS曾經有過res.write()
,但是在文檔中不再提及。 我還找到了一個名為express-mung
的npm包,但我認為我無法對其進行參數化(取決於req.body.direction
值,第二個響應的值將有所不同)。
據我所知,這超出了HTTP請求的范圍。 應該只有一個回應。
根據您的要求,我建議使用websockets。
https://socket.io/是最受歡迎的選擇之一。
簡單來說,您將擁有一個websocket服務器以及expressJs服務器。 從客戶端,您將使用socketIo客戶端發出事件。 接收到事件后,服務器會將第一個事件(MOVING)發回至目標套接字連接。 然后在超時后,它將發出另一個事件(OPENED或CLOSED)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.