繁体   English   中英

服务器只响应一次 Stream 数据

[英]Server responds with Stream data only once

我需要通过 Http 从大 csv 文件发送数据。这是我的代码

const transformToJson = new Transform({
    objectMode: true,
    transform(chunk, encoding, done) {
        this.push(JSON.stringify(chunk));
        done();
    }
});

app.get('/api', (req: Request, res: Response) => {
    const stream = fs.createReadStream(filePath);
    stream.pipe(csvParser()).pipe(transformToJson).pipe(res);
    stream.on('open', () => console.log('open'))
    stream.on('close', () => console.log('closed'))
    req.on('aborted', () => stream.destroy());
})

问题是当我在这个端点上发送请求时,我得到了数据,但只有一次。 如果我再次发送我的请求(没有重新加载服务器),它几乎立即返回无效。

            open
[start:run] closed
[start:run] open
[start:run] open
[start:run] open
[start:run] open

这是打开和关闭事件的控制台日志,如您所见,可读 stream 仅关闭一次,也没有错误。

将不胜感激您的帮助!

问题出在我的 Transform stream 上。 我创建了一次,但每次请求都必须这样做。

const transformToJson = () => new Transform({
    objectMode: true,
    transform(chunk, encoding, done) {
        this.push(JSON.stringify(chunk));
        done();
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM