Следующий код завершает пример, приведенный OP, используя потоковый API Node 0.10.

ажется, что элегантный способ обработки определенных видов данных в Node.js - это цепочка объектов обработки, таких как каналы UNIX.

Например, grep:

function Grep(pattern) {
    ...
}
util.inherits(Grep, stream.Stream);

Grep.prototype.???? = ???????  // What goes here?

grep = new Grep(/foo/);

process.stdin.pipe(grep);
myStream.pipe(process.stdout);

Однако мне совсем не ясно, как различные методы Stream должны быть переопределены, чтобы это работало.

Как я могу создать объект Stream, который просто копирует его входные данные в свои выходные? Предположительно с учетом этого, более сложные потоки фильтрации становятся тривиальными.

Обновить: Такое ощущение, что должно работать следующее (выражается в CoffeeScript, поэтому я не заполняю это поле синтаксисом JS!):

class Forwarder extends stream.Stream
    write: (chunk, encoding) ->
        @emit 'data', chunk
    end: (chunk, encoding) =>
        if chunk?
            @emit 'data', chunk
        @emit 'end'

fwd = new Forwarder()
fwd.pipe(process.stdout);
process.stdin.pipe(fwd);
process.stdin.resume();

Однако что-то для этого скрипта ничего не выводит. Явный вызов fwd.write () в скрипте вызывает вывод на стандартный вывод.

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

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