html5 - EventSource报错
phpcn_u1582
phpcn_u1582 2017-05-31 10:39:06
0
2
849

错误

错误:发送后无法设置标头。

雷雷 雷雷 雷雷
phpcn_u1582
phpcn_u1582

全部回复(2)
我想大声告诉你

问题已解决,需要给发送的数据加上"data:"前缀,"nn"后缀,即"data"+msg+"nn"
服务端代码修改如下:

const express = require('express');
const router = express.Router();
router.get('/connect',function(req,resp,next){
    resp.writeHead(200,{
        "Content-Type":"text/event-stream",
        "Cache-Control":"no-cache",
        "Connection":"keep-alive"
    });

    setInterval(function(){
 
      resp.write("data:"+Date.now()+"\n\n");
    },1000);

});


router.get('/html',(req,resp,next)=>{
    resp.render('./eventsource/msgsend_recevie.html');
});



module.exports=router;
给我你的怀抱

问题

在express的response已经send后,response不允许再进行header等一系列的操作,setintval是一个定时器,你的逻辑方式没有正确。
你的setintval第一次已经把响应推送出去了,那么后面这个响应已经不能继续操作了,由于http是单向非双向的,所以第二次是无效的操作

解决方案

如果你希望客户端能够接受服务端得事件推送的话,我推荐使用socketio,或者使用ajax轮训去处理。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板