node.js - 在流式渲染期间更改 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 状态?
谢谢!
解决方案
http 规范说,响应客户端的第一步是编写标头,然后开始编写响应的正文。
当您调用 res.write 时,您会隐式地告诉 nodejs 编写标头,然后开始编写您的内容。
我想你不能做你想做的事。客户端需要自己判断body不一致。
推荐阅读
- typescript - 为什么我必须在构造函数中使用 NaN 而不能使用 null?打字稿
- azure-data-factory - 无法在 Azure 数据工厂中添加 Dynamics 365 作为源和数据节作为目标,数据集被禁用无法选择它们
- python - 如何检测网络中的以太网设备 (UDP)
- excel - VBA:如何有条件地为 ComboBox 着色?
- nuxt.js - 在 Nuxt 中使用附加数据将 var 注入到手写笔
- android - 使用 afe_pcm_tx 和 afe_pcm_rx 的语音呼叫 afe-proxy 有间歇性声音
- amazon-web-services - AWS 网络负载均衡器 SSL 直通
- python - 在 jupyter 中嵌入图像并使用 nbconvert 将其导出为 PDF 时出错
- ruby-on-rails - 按参数过滤(降序) - 在 Rails 中?
- capybara - 我想使用 Capybara 实现 OTP 自动化。任何建议都是非常值得赞赏的