Chiusura del stream di risposta Http in NodeJS prima che termini

Sto usando il modulo delle richieste in nodejs per fare una richiesta e sto rispondendo in streaming. Questo stream di risposta viene reindirizzato al parser csv e popola i record su un array. Una volta ottenuto un conteggio preimpostato di record, voglio terminare l’analisi csv e chiudere il stream di risposta. Come faccio a pulire correttamente il stream di risposta. Ecco lo pseudo codice

var stream = request.get(url); stream.pipe(csvParser); var count = 15; csvParser.on("readable",function(){ while(record = csvParser.read()){ if(records.length<count){ records.push(record); } else { csvParser.end(); //stream.close(); //stream.unpipe(); // stream.destroy(); } } }); csvParser.on("error",function(err){ console.log("Error",err.message); }) csvParser.on("finish",function(){ //console.log("records",records); console.log("done"); }) 

quando provo stream.close (), sta dicendo metodo non definito. Qual è il modo corretto di ripulirlo …?

Non esiste un metodo close per il stream leggibile. metodo close è vecchio hack per chiudere solo fs read stream (non so se funziona ancora)

Inoltre non esiste alcun metodo di destroy in stream leggibile.

Temo che non ci sia alcun metodo per terminare lo stream prima che finisca.

Puoi interrompere la lettura dal stream. Nel tuo caso il stream funziona in flowing mode , quindi questo metodo csvParser.read() quando viene chiamato, è le richieste per le prossime parti di dati. Se smetti di chiamare csvParser.read() allora questo evento csvParser.on("readable",function(){ fermato per sparare.

C’è una buona conversazione https://groups.google.com/forum/#!msg/nodejs/eGukJUQrOBY/URD8I7tNxRUJ su un caso simile.