我想创建一个koa
路由,其行为类似于另一个网址的代理,该路由提供的文件通常为几十兆字节。
因此我不想在做出回应时阻止。我目前正在使用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.
。
答案 0 :(得分:5)
原来解决方案很简单:
var req = require('request');
//...
this.body = req(url);
这是因为this.body
必须是可读的流,req(url)
返回。感谢@danneu的解释。