【发布时间】:2018-07-28 11:44:23
【问题描述】:
使用 Koa2,我不知道如何将数据写入响应流,所以在 Express 中会是这样的:
res.write('some string');
我知道我可以为 ctx.body 分配一个流,但我对 node.js 流不太熟悉,所以不知道如何创建这个流。
【问题讨论】:
标签: javascript node.js stream koa2
使用 Koa2,我不知道如何将数据写入响应流,所以在 Express 中会是这样的:
res.write('some string');
我知道我可以为 ctx.body 分配一个流,但我对 node.js 流不太熟悉,所以不知道如何创建这个流。
【问题讨论】:
标签: javascript node.js stream koa2
koa 文档允许您为响应分配一个流:(来自https://koajs.com/#response)
ctx.response.body=
将响应正文设置为以下之一:
ctx.body 只是ctx.response.body 的快捷方式
这里有一些你可以如何使用它的例子(加上标准的 koa 身体分配)
调用服务器
'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", "text/html");
ctx.body = src;
} else {
// normal KOA response
ctx.body = 'BODY: Hello, World!' ;
}
});
app.listen(8080);
【讨论】:
text/html,而不是 txt/html。