我有一个长时间运行的过程,需要在多个阶段发回数据。有没有办法用express.js
发回多个回复res.send(200, 'hello')
res.send(200, 'world')
res.end()
但是当我运行curl -X POST localhost:3001/helloworld
时,我得到的只是hello
如何发送多个回复,或者这与快递无关?
答案 0 :(得分:15)
使用res.write()
。
res.send()
已拨打res.end()
,这意味着您在调用res.send之后无法再写入res(也意味着您的res.end()
来电无效)
答案 1 :(得分:1)
您只能为一个HTTP请求发送一个HTTP响应。但是,您当然可以在响应中编写任何类型的数据。这可能是换行符分隔的JSON,多部分或您选择的任何其他格式。
如果您想将事件从服务器流式传输到浏览器,一个简单的替代方法可能是使用Server-sent events(polyfill)之类的内容。
答案 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
});