在node.js express中通过部分发送数据
我正在寻找网站和文件的node.js
express
模块,似乎没有办法按部分发送数据。 我有一个文件渲染速度不是很快,我想在渲染一切之前发送它的一部分。
所以这是我的问题:
- 是否有一个
response
按部分发送数据的方法? -
response.end()
什么? - 如果没有办法按部分发送数据 – 背后的理由是什么? 如果这是真的,我会说它看起来比非阻塞更多的阻塞。 浏览器可以更快速地加载信息,如果数据更早。
示例简化代码:
app.get(..) { renderFile(file, function(data) { response.send(data); }); response.end(); )
这段代码只发送第一个数据块。 我检查了 – 数据是正确的,callback被称为不止一次。
当然我可以将数据附加到一个variables,然后写入response.send(data);
但我不喜欢这种方法 – 这不是它应该工作的方式。
response
对象是可写的stream。 只需写入它,Express甚至会自动为您设置分块编码。
response.write(chunk);
如果创build这个“文件”是可读的stream,你也可以pipe道。 http://nodejs.org/api/stream.html
Express延伸连接,扩展HTTP我相信。 看看HTTP API ,看起来你正在寻找的是response.write
,它将一大块数据作为响应主体来发送。 然后我相信你可以使用response.end
结束信号。
响应对象可以写入。 在你的情况下,以下将是一个解决scheme:
renderFile(file, function(data) { response.send(data); }); response.end();
如果你有机会把文件作为一个stream,这可以进一步精简:
file.getReadableStream().pipe(response);