gpt4 book ai didi

javascript - html5 岩石 Node js 服务器发送事件 SSE 示例不工作

转载 作者:太空狗 更新时间:2023-10-29 15:08:30 24 4
gpt4 key购买 nike

文章链接:http://www.html5rocks.com/en/tutorials/eventsource/basics/

node.js SSE 服务器在该示例中不工作。我最终打开了与 /events 的连接,但浏览器未收到任何响应。

Chrome dev-tool prnt scrn

sse-server.js

var http = require('http');
var sys = require('sys');
var fs = require('fs');

http.createServer(function(req, res) {
//debugHeaders(req);

if (req.headers.accept && req.headers.accept == 'text/event-stream') {
if (req.url == '/events') {
sendSSE(req, res);
} else {
res.writeHead(404);
res.end();
}
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(fs.readFileSync(__dirname + '/sse-node.html'));
res.end();
}
}).listen(8000);

function sendSSE(req, res) {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
});

var id = (new Date()).toLocaleTimeString();

// Sends a SSE every 5 seconds on a single connection.
setInterval(function() {
constructSSE(res, id, (new Date()).toLocaleTimeString());
}, 5000);

constructSSE(res, id, (new Date()).toLocaleTimeString());
}

function constructSSE(res, id, data) {
res.write('id: ' + id + '\n');
res.write("data: " + data + '\n\n');
}

function debugHeaders(req) {
sys.puts('URL: ' + req.url);
for (var key in req.headers) {
sys.puts(key + ': ' + req.headers[key]);
}
sys.puts('\n\n');
}

sse-node.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script>
var source = new EventSource('/events');
source.onmessage = function(e) {
document.body.innerHTML += e.data + '<br>';
};
</script>
</body>
</html>

最佳答案

问题出在服务器上。在我的例子中,我使用 iisnode Node 包将 Node 与 IIS 一起使用。为了解决这个问题,我需要像这样在 web.config 中配置 iisnode:

<iisnode flushResponse="true" />

在此之后,一切正常。其他有类似问题的人可能从这里开始,但 apache 和 nginx 可能有类似的配置要求。

关于javascript - html5 岩石 Node js 服务器发送事件 SSE 示例不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825190/

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