2013-07-30 15 views
11

Voglio sapere se è possibile che più funzioni possano consumare un flusso singolo in node.js. Se sì Come può essere fatto? È possibile collegare a più destinazioni?Consumo multiplo di flusso singolo

Desidero utilizzare lo streaming in due diverse funzioni che sono parallele. Sto facendo il flusso parallelo usando il modulo asincrono. Quindi sarà possibile rilasciare l'istruzione pipe() all'interno di ciascuna di queste funzioni?

Grazie in anticipo.

+0

Il primo gestore che lo consuma è un flusso stesso, quindi lo passa al secondo gestore. –

+0

@BenjaminGruenbaum o progettare un "tee" che mantiene più flussi di output e scrive solo i dati dal flusso di input su ogni output. – SheetJS

+1

Aspetta, nvm. È possibile reindirizzare i flussi in tutti i posti che desideri: è semplicissimo. –

risposta

12

, è possibile, facile e comune. Il seguente è un flusso di dati in pipe da una singola fonte a più fonti. Esso mostra una funzione di callback anonima che viene collocato sul ciclo di eventi che contiene i flussi funzione di scrittura che fanno il lavoro di scrittura attuale:

var fs = require('fs'); 

var rs1 = fs.createReadStream ('input1.txt');      
var ws1 = fs.createWriteStream('output1.txt');  
var ws2 = fs.createWriteStream('output2.txt'); 

rs1.on('data', function (data) {         
    console.log(data.toString('utf8'));        
    ws1.write('1: ' + data);          
    ws2.write('2: ' + data);          
}); 

Un modo più semplice è quello di utilizzare le funzioni .pipe().

var fs = require('fs'); 

var rs1 = fs.createReadStream ('input1.txt');      
var ws1 = fs.createWriteStream('output1.txt');  
var ws2 = fs.createWriteStream('output2.txt'); 

rs1.pipe(ws1); 
rs1.pipe(ws2); 

Il .pipe() permette di fare cose eccezionali come gasdotto concatenamento in futuro per la manipolazione gasdotto, molto simile al concetto unix di qualcosa come du . | sort -rn | less dove è possibile utilizzare i tubi più per i gestori.

+0

Sto usando lo streaming in due diverse funzioni nel flusso parallelo nel modulo asincrono. Quindi se avessi fatto il pipe in due diverse funzioni funzionerebbe ancora? –

+0

Ho aggiornato la domanda con i dettagli che ho scritto nel commento. Quindi aggiorna anche la tua risposta –

Problemi correlati