簡體   English   中英

超時后如何更新ExpressJS服務器對POST請求的響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM