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 的解释。
我想创建一个 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 的解释。