定期在Node.js中刷新并发送响应对象

时间:2018-09-29 14:48:06

标签: javascript node.js async.js

我是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()。但是我返回一个对象,而不是字符串或缓冲区,因此它也无法正常工作。

如果有人可以给出一个确切实现此目标的示例,那将是很好的。

1 个答案:

答案 0 :(得分:0)

response.send()方法完成两项任务

1. write content on the response and send.
2. End connection with res.end().

因此,当您完成response.send()时,它将发送您的消息并关闭连接。因此,您会收到错误消息“发送后无法设置标题”。

因此,结论是您不能使用response.send()发送多个响应。

您可以通过socket.io实现此目的,也可以在间隔后从前端发出请求。