搜索

首页  >  问答  >  正文

html5 - EventSource报错

错误

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

雷雷 雷雷 雷雷
phpcn_u1582phpcn_u15822763 天前851

全部回复(2)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-05-31 10:41:06

    问题已解决,需要给发送的数据加上"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;

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-31 10:41:06

    问题

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

    解决方案

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

    回复
    0
  • 取消回复