在Express.js中使用相同的响应对象发送多个响应

时间:2014-08-08 17:32:16

标签: javascript node.js express

我有一个长时间运行的过程,需要在多个阶段发回数据。有没有办法用express.js

发回多个回复
res.send(200, 'hello')
res.send(200, 'world')
res.end() 

但是当我运行curl -X POST localhost:3001/helloworld时,我得到的只是hello

如何发送多个回复,或者这与快递无关?

4 个答案:

答案 0 :(得分:15)

使用res.write()

res.send()已拨打res.end(),这意味着您在调用res.send之后无法再写入res(也意味着您的res.end()来电无效)

答案 1 :(得分:1)

您只能为一个HTTP请求发送一个HTTP响应。但是,您当然可以在响应中编写任何类型的数据。这可能是换行符分隔的JSON,多部分或您选择的任何其他格式。

如果您想将事件从服务器流式传输到浏览器,一个简单的替代方法可能是使用Server-sent eventspolyfill)之类的内容。

答案 2 :(得分:1)

试试这个,这应该可以解决你的问题。

app.get('/', function (req, res) {

  var i = 1,
    max = 5;

  //set the appropriate HTTP header
  res.setHeader('Content-Type', 'text/html');

  //send multiple responses to the client
  for (; i <= max; i++) {
    res.write('<h1>This is the response #: ' + i + '</h1>');
  }

  //end the response process
  res.end();
});

答案 3 :(得分:0)

res.write(JSON.stringify({
    min, 
    max, 
    formattedData
}));

res.send({
    min,
    max,
    formattedData
});

推荐Node Res.write send multiple objects: