在需要发送事件流的HTTP响应中,设置'Transfer-Encoding”标头为'chunked”,以便将响应分成一系列数据块。这将确保每个数据块都能被立即发送到客户端,而不会等待整个响应完成。以下是使用Node.js的示例代码:
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Transfer-Encoding': 'chunked'
});
// Send event stream data in chunks
setInterval(() => {
res.write(`data: ${new Date()}\n\n`);
}, 1000);
}).listen(3000);
在这个例子中,我们设置了'Content-Type”标头为'text/event-stream”,以指示它是一个事件流响应。我们还设置了'Cache-Control”标头为'no-cache”,以确保客户端不会缓存这些数据。最重要的是,我们设置了'Transfer-Encoding”标头为'chunked”,以表明它是一个块编码的响应。
然后,我们通过定时器将数据写入响应体,每秒钟一次。由于'Transfer-Encoding: chunked”标头的存在,每个数据块都将被立即发送到客户端,而不需要等待整个响应完成。这就是如何发送事件流,而不需要为响应缓冲的方法。