数据的 POST 请求请求“关闭”?"/>
为什么 Node.js Express 调用在请求关闭之前对带有数据的 POST 请求请求“关闭”?
我已经使用 Node.js 和 Express 实现了一个简单的流媒体服务器。服务器使用 POST 端点定期发送数据块。但是,我观察到当请求中有数据时,请求关闭事件会立即触发,即使我没有明确地从客户端关闭请求。
这是我的 POST 请求流示例的代码片段:
const express = require("express");
const app = express();
app.use(express.json());
// POST request streaming example
app.post("/stream-post", (req, res) => {
res.setHeader("Content-Type", "text/plain");
res.setHeader("Transfer-Encoding", "chunked");
const intervalId = setInterval(() => {
res.write("This is a chunk of streaming data.\n");
}, 1000);
// Cleanup when the connection is closed
req.on("close", () => {
clearInterval(intervalId);
res.end();
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
当我使用以下 cURL 命令向此端点发送带有数据的 POST 请求时,立即触发关闭事件:
curl -i --no-buffer -X POST http://localhost:3000/stream-post \
-H "Content-Type: application/json" \
-d '{
"this is a test": "value"
}'
但是,当请求中没有数据时,不会立即触发关闭事件。
这种行为背后的原因可能是什么?有没有办法保证close事件只在request真正关闭的时候触发,而不管request中有没有数据?
回答如下:更多推荐
为什么 Node.js Express 调用在请求关闭之前对带有数据的 POST 请求请求“关闭”?
发布评论