Koa2 - How to write to response stream?

后端 未结 1 868
暗喜
暗喜 2021-01-12 07:05

Using Koa2 and I\'m not sure how to write data to the response stream, so in Express it would be something like:

res.write(\'some string\');
<
相关标签:
1条回答
  • 2021-01-12 07:33

    The koa documentation allows you to assign a stream to your response: (from https://koajs.com/#response)

    ctx.response.body=

    Set response body to one of the following:

    • string written
    • Buffer written
    • Stream piped
    • Object || Array json-stringified
    • null no content response

    ctx.body is just a shortcut to ctx.response.body

    So here are some examples how you could use it (plus standard koa body assignment)

    Calling the server with - localhost:8080/stream ... will respond with the data stream - localhost:8080/file ... will respond with the file stream - localhost:8080/ ... just sends back standard body

    '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);
    
    0 讨论(0)
提交回复
热议问题