最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何在超时后更新ExpressJS服务器对POST请求的响应

运维笔记admin9浏览0评论

如何在超时后更新ExpressJS服务器对POST请求的响应

如何在超时后更新ExpressJS服务器对POST请求的响应

我正在使用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)

发布评论

评论列表(0)

  1. 暂无评论