Koa2を使用していて、応答ストリームにデータを書き込む方法がわからないため、Expressでは次のようになります。
res.write('some string');
ストリームをctx.body
に割り当てることができることを理解していますが、node.jsストリームに慣れていないため、このストリームの作成方法がわかりません。
Koaのドキュメントでは、応答にストリームを割り当てることができます(from https://koajs.com/#response )
ctx.response.body =
応答本文を次のいずれかに設定します。
ctx.body
はctx.response.body
へのショートカットです
だからここにあなたがそれをどのように使うことができるかのいくつかの例があります(そして標準のコアボディ割り当て)
-localhost:8080/stream ...でサーバーを呼び出すと、データストリームで応答します-localhost:8080/file ...ファイルストリームで応答します-localhost:8080/...
'use strict';
const koa = require('koa');
const fs = require('fs');
const app = new koa();
const readable = require('stream').Readable
const s = new readable;
// response
app.use(ctx => {
if (ctx.request.url === '/stream') {
// stream data
s.Push('STREAM: Hello, World!');
s.Push(null); // indicates end of the stream
ctx.body = s;
} else if (ctx.request.url === '/file') {
// stream file
const src = fs.createReadStream('./big.file');
ctx.response.set("content-type", "txt/html");
ctx.body = src;
} else {
// normal KOA response
ctx.body = 'BODY: Hello, World!' ;
}
});
app.listen(8080);