Простейший эхо-сервер nodejs

Я знакомлюсь с потоками в nodejs и у меня есть вопрос:

У меня есть то, что я думаю, является самым простым из возможных nodejs "эхо-сервер " т. е. сервер, который просто передает обратно потоку ответов все, что он получает через поток запросов. Это работает, но с оговоркой. Клиент получает данные обратно только после закрытия потока отправки. Вот код сервера:

var http = require('http')
var server = http.createServer(function (req, res) {
  req.pipe(res);
});
server.listen(8000);

И вот как я это проверяю:

Выполнение следующих работ просто отлично

term1> node server.js&

term2> echo 'hello world!'|curl --no-buffer --data-binary  @-  'http://localhost:8000'
hello world!

Тем не менее, это работает только потому, что echo закрывает свой дескриптор выходного файла после того, как это будет сделано, то есть сервер не будет ничего писать до тех пор, пока клиент не завершит отправку содержимого:

term2>
term2> yes|curl --no-buffer --data-binary  @-  'http://localhost:8000'

(здесь эта строка застревает навсегда)

Я ожидаю, чтоyes заполнит потоковые буферы довольно быстро, так что я бы начал видеть васвозвращается довольно быстро. К сожалению, они никогда не делают.

Это ожидается? Как я должен использовать потоки / каналы, чтобы они имели желаемый эффект? Кстати, я нене важно, будут ли выходные данные возвращаться кусками ... Я понимаю, что это будут результаты потоков (или файлового ввода-вывода), выполняющих свою магию буферизации.

Спасибо за помощь

Ответы на вопрос(1)

Ваш ответ на вопрос