javascript - EventSource的readyState一直为“0”

查看:120
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆