gpt4 book ai didi

javascript - Node.js 服务器发送事件 - 何时使用 response.flushHeaders() 与 response.writeHead()

转载 作者:行者123 更新时间:2023-12-04 11:36:16 33 4
gpt4 key购买 nike

我正在使用 Express 在 NodeJS 中编写应用程序的服务器端部分,它将使用 Server-Sent-Events (SSE)。
我有一个似乎可行的解决方案,但需要了解在 Node.js 中是否有更好的方法。

当前代码的相关部分如下所示:

const headers = {
'Content-Type': 'text/event-stream',
'Connection': 'keep-alive',
'Cache-Control': 'no-cache',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true'
};
res.writeHead(200, headers);

// Do more stuff [...]

在哪里 res是响应对象。

而不是调用 res.writeHead() , 我见过其他例子使用 res.flushHeaders() :
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Connection', 'keep-alive');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.flushHeaders();

就 SSE 和保持连接打开以发送消息而言,两者之间是否存在差异,并且一个比另一个更可取?

最佳答案

它们实际上是等价的,因为 res.write()刷新 header 及其第一个 block 。对于 SSE,您很可能需要立即响应,至少表明连接成功。 res.setHeader()如果您以后需要访问或修改 header 状态,这可能很有用,但这似乎与 SSE 无关。
请参阅 nodejs.org 文档了解 response.write()response.setHeader() .

关于javascript - Node.js 服务器发送事件 - 何时使用 response.flushHeaders() 与 response.writeHead(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799718/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com