我是Node.js的新手,我正尝试使用以下代码定期刷新数据:
router.post('/getMessage',function(req,res){
setInterval(findMessage,5000);
function findMessage() {
Message.find(
{
$or: [
{sender: req.body.sender, receiver: req.body.receiver},
{sender: req.body.receiver, receiver: req.body.sender}
]
},
(err, data) => {
res.send({success: true, data: data});
}
);
}
});
但这会产生错误:“发送后无法设置标题”。我知道res.send隐式调用res.end(),因此会发生此错误。并且也尝试过res.write()。但是我返回一个对象,而不是字符串或缓冲区,因此它也无法正常工作。
如果有人可以给出一个确切实现此目标的示例,那将是很好的。
答案 0 :(得分:0)
response.send()方法完成两项任务
1. write content on the response and send.
2. End connection with res.end().
因此,当您完成response.send()时,它将发送您的消息并关闭连接。因此,您会收到错误消息“发送后无法设置标题”。
因此,结论是您不能使用response.send()发送多个响应。
您可以通过socket.io实现此目的,也可以在间隔后从前端发出请求。