錯誤
錯誤:發送後無法設定標頭。
問題已解決,需要為發送的資料加上"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輪訓去處理。
問題已解決,需要為發送的資料加上"data:"前綴,"nn"後綴,即"data"+msg+"nn"
服務端程式碼修改如下:
問題
在express的response已經send後,response不允許再進行header等一系列的操作,setintval是一個定時器,你的邏輯方式沒有正確。
你的setintval第一次已經把回應推送出去了,那麼後面這個回應已經不能繼續操作了,由於http是單向非雙向的,所以第二次是無效的操作
解決方案
如果你希望客戶端能夠接受服務端得事件推送的話,我推薦使用socketio,或者使用ajax輪訓去處理。