为什么 Node.js Express 调用在请求关闭之前对带有数据的 POST 请求请求“关闭”?

编程入门 行业动态 更新时间:2024-10-05 03:29:28

为什么 Node.js Express 调用在请求关闭之前对带有<a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据的 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 请求请求“关闭”?

本文发布于:2024-05-30 10:46:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770414.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   js   Node   POST   Express

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!