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.
数据传输的格式不对。