Sending multiple responses with the same response object in Express.js

家住魔仙堡 提交于 2020-01-31 07:41:47

问题


I have a long running process which needs to send data back at multiple stages. Is there some way to send back multiple responses with express.js

res.send(200, 'hello')
res.send(200, 'world')
res.end() 

but when I run curl -X POST localhost:3001/helloworld all I get is hello

How can I send multiple responses or is this not possible to do with express?


回答1:


Use res.write().

res.send() already makes a call to res.end(), meaning you can't write to res anymore after a call to res.send (meaning also your res.end() call was useless).




回答2:


You can only send one HTTP response for one HTTP request. However, you can certainly write whatever kind of data in the response that you want. That could be newline-delimited JSON, multipart parts, or whatever other format you choose.

If you want to stream events from the server to the browser, an easy alternative might be to use something like Server-sent events (polyfill).




回答3:


Try this, this should solve your problem.

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();
});



回答4:


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

or

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

refer Node Res.write send multiple objects:



来源:https://stackoverflow.com/questions/25209073/sending-multiple-responses-with-the-same-response-object-in-express-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!