Я не могу на всю жизнь понять, как реализовать stream, который правильно обрабатывает противодавление. Если вы никогда не используете паузу и не возобновляете?Как реализовать поток, который правильно обрабатывает противодавление в node.js?
У меня есть эта реализация Я пытаюсь получить, чтобы работать правильно:
var StreamPeeker = exports.StreamPeeker = function(myStream, callback) {
stream.Readable.call(this, {highWaterMark: highWaterMark})
this.stream = myStream
myStream.on('readable', function() {
var data = myStream.read(5000)
//process.stdout.write("Eff: "+data)
if(data !== null) {
if(!this.push(data)) {
process.stdout.write("Pause")
this.pause()
}
callback(data)
}
}.bind(this))
myStream.on('end', function() {
this.push(null)
}.bind(this))
}
util.inherits(StreamPeeker, stream.Readable)
StreamPeeker.prototype._read = function() {
process.stdout.write("resume")
//this.resume() // putting this in for some reason causes the stream to not output???
}
Это правильно посылает выход, но не правильно производить противодавление. Как я могу изменить его для правильной поддержки противодавления?