gpt4 book ai didi

node.js - 服务器发送的事件在简单快速 SSE 的 chrome devtools 中显示为空白

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:58 28 4
gpt4 key购买 nike

这里是使用express程序发送SSE的简单代码示例(工作正常)。唯一的问题是 devtools eventStream 部分是空白的。 Empty event stream

const express = require('express')

const app = express()
app.use(express.static('public'))

app.get('/countdown', function(req, res) {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
"Access-Control-Allow-Origin": "*"
})
countdown(res, 10)
})

function countdown(res, count) {
res.write(JSON.stringify({ count: count}))
if (count)
setTimeout(() => countdown(res, count-1), 1000)
else
res.end()
}

app.listen(3000, () => console.log('SSE app listening on port 3000!'))

最佳答案

您必须像这样格式化事件:

const express = require('express');

const app = express();
app.use(express.static('public'));

app.get('/countdown', function(req, res) {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
Connection: 'keep-alive',
'Access-Control-Allow-Origin': '*'
});
countdown(res, 1, 10);
});

function countdown(res, id, count) {
res.write(`id: ${id}\n`);
res.write('event: count\n');
res.write(`data: ${JSON.stringify({ count: count })}\n\n`);
if (count) setTimeout(() => countdown(res, id + 1, count - 1), 1000);
else res.end();
}

app.listen(3000, () => console.log('SSE app listening on port 3000!'));

并在您的首页使用 EventSource :

<script>
var source = new EventSource('http://localhost:3000/countdown');
source.onmessage = function(event) {
console.log(event);
};
</script>

enter image description here

关于node.js - 服务器发送的事件在简单快速 SSE 的 chrome devtools 中显示为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59008192/

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