Я хочу создать маршрут koa
, который действует как прокси-сервер для другого URL-адреса, который доставляет файл, который обычно составляет несколько десятков мегабайт.koa.js потоковый ответ от удаленного url
Поэтому я бы не хотел блокировать при ответе. В настоящее время я использую this.body = yield request.get(url);
, где запрос - это [co-request
] 1.
Как передать ответ клиенту?
Edit:
Я сейчас делаю следующее:
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
@danneu имеет смысл. – nha