html5 - EventSource报错
本文介绍了html5 - EventSource报错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
错误
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11)
at ServerResponse.header (D:\node\javascript-demo\node_modules\express\lib\response.js:730:10)
at ServerResponse.send (D:\node\javascript-demo\node_modules\express\lib\response.js:170:12)
at Timeout.setInterval [as _onTimeout] (D:\node\javascript-demo\routes\eventsource\eventsource.js:8:8)
at ontimeout (timers.js:384:18)
at tryOnTimeout (timers.js:244:5)
at Timer.listOnTimeout (timers.js:214:5) Program node --debug ./bin/www exited with code 1
const express = require('express');
const router = express.Router();
router.get('/connect',function(req,resp,next){
resp.append('Content-Type','text/event-stream');
console.log(req.method);
setInterval((data)=>{
resp.send('hello!');
},1000,'hello');
});
router.get('/html',(req,resp,next)=>{
resp.render('./eventsource/msgsend_recevie.html');
});module.exports=router;
<!DOCTYPE html>
<html lang="en">
<head>
<title>EventSource消息发送</title>
<style type="text/css">
*{
margin:0 auto;
padding:0;
}
div{
width:440px;
height:450px;
border:2px solid;
margin-top:100px;
}
</style>
</head>
<body>
<div>
<textarea id="msg_recevie" rows="30" cols="60"></textarea>
</div>
<script>
//使用eventsource发送信息
var eventSource = new EventSource('/msg_send/connect');
eventSource.onmessage=function(e){
var tx=document.getElementsByTagName('textarea')[0];
tx.value=e.data;
};
</script>
</body>
</html>
解决方案
问题已解决,需要给发送的数据加上"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;
这篇关于html5 - EventSource报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文