2016-10-09 1 views
1

Ich habe einen beschreibbaren Stream, den ich mit einem eigenen Stream umhüllen möchte, um einige Daten an etwas voranzustellen in den Ausgabestrom.Erstellen eines schreibbaren Node.js-Streams, der Daten an einen anderen beschreibbaren Stream weiterleitet, aber einige seiner eigenen Daten voranstellt.

Ich würde normalerweise schreiben inputStream.pipe(outputStream), wo inputStreamfoo bar liefern würde und outputStream erhalten würde foo bar.

würde Ich mag Lage sein inputStream.pipe(proxyStream('prefix ', outputStream)) zu schreiben, wo inputStreamfoo bar bieten würde, aber outputStreamprefix foo bar empfangen würde.

Ich habe den folgenden Code versucht, aber ich bekomme Error: write after end fast sofort nach dem Start der Leitung.

class DetectStream extends stream.Writable { 
    constructor (prefix, output) { 
    super(); 
    this._output = output; 
    this._output.write(prefix, 'utf-8'); 
    } 
    _write (chunk, enc, next) { 
    this._output.write(chunk, enc, next); 
    } 
} 
+0

Sie können den Stream ändern, bevor sie '.pipe vorbei()' – guest271314

+0

Wie kann ich den Strom ändern? –

+0

Lese 'inputStream', modifiziere, konvertiere zurück nach' WritableStream', passiere nach '.pipe()' – guest271314

Antwort

1

Warum schreiben Sie nicht nur auf die outputStream bevor die inputStream hinein kochend?

function proxyStream (prefix, output) { 
    output.write(prefix, 'utf-8') 
    return output 
} 

es dann einfach verwenden wie Sie gesagt haben:

inputStream.pipe(proxyStream('prefix ', outputStream)) 
Verwandte Themen