首页 > 解决方案 > 在流式渲染期间更改 http 状态 (renderToNodeStream)

问题描述

我尝试实现流式渲染。我现在正在做的是:

// it is example code
res.write(htmlHeader)
const renderingStream = renderToNodeStream(<App />);
renderingStream.pipe(res)
renderingStream.on('end', () => {
 res.end();
});

// I am tracking error a bit differently, it is just example
renderingStream.on('error', () => {
  res.status(500);
});

据我所知,在我们向客户端发送任何内容之前,必须设置 express.js 中的 http 状态。这意味着,如果我首先发送 html 标头部分(在渲染期间预取资产),这意味着我无法将 http 状态代码更改为 200 之后的任何其他内容?

发送标头部分后是否可以在渲染期间更改 http 状态?如果没有,如果人们决定进行流式渲染,他们如何处理 http 状态?

谢谢!

标签: node.jsreactjsexpresshttp

解决方案


http 规范说,响应客户端的第一步是编写标头,然后开始编写响应的正文。

当您调用 res.write 时,您会隐式地告诉 nodejs 编写标头,然后开始编写您的内容。

我想你不能做你想做的事。客户端需要自己判断body不一致。


推荐阅读