【问题标题】:koa.js streaming response from remote url来自远程 url 的 koa.js 流式响应
【发布时间】:2016-04-27 10:29:41
【问题描述】:

我想创建一个 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.

【问题讨论】:

  • 您在正确的轨道上,但您只需将this.body 设置为可读流。您的答案(使用request 模块)有效,因为req(url) 返回一个可读流。一般来说,当你想直接在 Koa/co 中使用流时,你不会使用yield
  • @danneu 这很有道理。

标签: node.js streaming koa


【解决方案1】:

原来解决方案很简单:

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

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

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2013-09-20
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多