koa.js 来自远程 url 的流式响应

koa.js streaming response from remote url

我想创建一个 koa 路由,作为另一个 url 的代理,传送通常为几十兆字节的文件。

所以我不想在回复的时候阻塞。我目前正在使用 this.body = yield request.get(url);,请求是 [co-request]1 模块。

如何将响应流式传输回客户端?

编辑:

我现在正在做以下事情:

var req = require('request');
//...
this.body = req(url).pipe(fs.createWriteStream(this.params.what));

如果我将 url 粘贴到我的浏览器中,我会得到一个很好的文件。 但是,如果我在我的路线中得到 Error: Cannot pipe. Not readable.

原来解决方案很简单:

var req = require('request');
//...
this.body = req(url);

这是因为 this.body 必须是可读流,req(url) returns。感谢 @danneu 的解释。