javascript - EventSource的readyState一直为“0”
本文介绍了javascript - EventSource的readyState一直为“0”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
js代码是这样的:
<html>
<body>
<h1>获得服务器更新</h1>
<div id="result"></div>
<script>
if(typeof(EventSource)!=="undefined")
{
var source=new EventSource("stream");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event + "<br />";
};
source.onerror = function (event) {
console.log("error");
};
}
</script>
</body>
</html>
node代码是这样的:
var express=require("express");
var app=express();
var path=require("path");
var dirname=__dirname;
app.use(express.static(path.join(__dirname, './')));
app.get("/stream",function(req,res){
res.writeHead(200, {
"Content-Type":"text/event-stream"
});
setInterval(function(){
res.write("hello");
},1000);
});
app.listen(3031);
然后我隔一秒返回的hello并没有写到前台,但是network里面的确是每秒有数据返回的
最后我发现source.onmessage函数是需要source.readyState为1的,但是我搞不懂它一直为什么是0.
解决方案
数据传输的格式不对。
//SSE传输数据的固定格式:data:+要传输的数据+"\n\n"
res.write("data:"+"hello"+"\n\n");
这篇关于javascript - EventSource的readyState一直为“0”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文