I\'ve been trying to get a express app to send the response as stream.
var Readable = require(\'stream\').Readable;
var rs = Readable();
app.get(\'/report\
I needed to stream a response in express in order to work with tar-stream. Here is how I did it in case it helps anyone.
The requests are for a single file from a tar file stored on the server.
const fs = require("fs"),
tar = require("tar-stream");
app.get("/fileFromTar/*", (req, res) => {
const fileWanted = req.params[0],
readStream = fs.createReadStream('myTarFile.tar'),
extractor = tar.extract();
extractor.on('entry', (header, stream, next) => {
stream.on('end', next);
if (header.name === fileWanted) {
const { size } = header;
res.set({
"Content-Type": 'audio/flac', // or whichever one applies
"Content-Length": size,
"Content-Range": `bytes 0-${size}/${size}`
});
stream.pipe(res);
}
else stream.resume();
});
readStream.pipe(extractor);
});