搜尋

首頁  >  問答  >  主體

html5 - EventSource報錯

錯誤

錯誤:發送後無法設定標頭。

雷雷 雷雷 雷雷
phpcn_u1582phpcn_u15822733 天前830

全部回覆(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
  • 取消回覆