Противодавление по TCP, изменение верхней отметки ответа - PullRequest
0 голосов
/ 08 апреля 2020

Я хотел бы, чтобы результат вел себя так же, как myReadable.pipe (myWritable). Противодавление не создается из-за установки метки highwater на res.socket, есть ли способ изменить метки чтения и записи для созданного сокета?

var http = require('http');
const { Readable, Writable } = require('stream')

let i = 0;

const myReadable = new Readable({
  objectMode: true,
  highWaterMark: 3,
  read(size) {
  if(i < 100){
    this.push(`data ${i}`);
  }
  i++;
  console.log(`data ${i}`);
  }
});

const myWritable = new Writable({
  objectMode: true,
  highWaterMark: 3,
  write(chunk, encoding, callback) {
    console.log("st: ", chunk.toString());
    //setTimeout(callback, 2000);
    callback();
  }
});

// myReadable.pipe(myWritable);

var server = http.createServer(function (req, res) {
  console.log("response here: ", res.writableHighWaterMark);
  myReadable.pipe(res);
});

server.listen(8000, '127.0.0.1');

http.get('http://localhost:8000', { readableHighWaterMark: 0,  writableHighWaterMark: 0 },  res => {
  res.pipe(myWritable);
});
...