multistream
A stream that emits multiple other streams one after another (streams2)
Simple, robust streams2 version of combined-stream. Allows you to combine multiple streams into a single stream. When the first stream ends, the next one starts, and so on, until all streams are consumed.
This module is used by WebTorrent, specifically create-torrent.
install
npm install multistream
usage
Use multistream
like this:
var MultiStream = require('multistream')
var fs = require('fs')
var streams = [
fs.createReadStream(__dirname + '/numbers/1.txt'),
fs.createReadStream(__dirname + '/numbers/2.txt'),
fs.createReadStream(__dirname + '/numbers/3.txt')
]
MultiStream(streams).pipe(process.stdout)
You can also create an object-mode stream with MultiStream.obj(streams)
.
To lazily create the streams, wrap them in a function:
var streams = [
fs.createReadStream(__dirname + '/numbers/1.txt'),
function () {
return fs.createReadStream(__dirname + '/numbers/2.txt')
},
function () {
return fs.createReadStream(__dirname + '/numbers/3.txt')
}
]
MultiStream(streams).pipe(process.stdout)
Alternatively, streams may be created by an asynchronous "factory" function:
var count = 0;
function factory (cb) {
if (count > 3) return cb(null, null)
count++
setTimeout(function () {
cb(null, fs.createReadStream(__dirname + '/numbers/' + count + '.txt'))
}, 100)
}
MultiStream(factory).pipe(process.stdout)
contributors
license
MIT. Copyright (c) Feross Aboukhadijeh.