Fermeture du stream de réponse HTTP dans NodeJS avant sa fin

J’utilise le module de demandes dans nodejs pour faire une demande et je suis en train de transmettre les réponses que j’ai reçues. Ce stream de réponse est dirigé vers un parsingur csv et alimente des enregistrements sur un tableau. Une fois que je reçois un nombre prédéfini d’enregistrements, je veux terminer l’parsing csv et fermer le stream de réponse. Comment nettoyer correctement le stream de réponse. Voici le pseudo code

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"); }) 

Quand j’essaie stream.close (), il dit méthode non définie. Quelle est la bonne façon de le nettoyer ..?

Il n’y a pas de méthode de close pour le stream lisible. close méthode close est un vieux hack pour ne fermer que le stream en lecture fs (je ne sais pas s’il fonctionne toujours)

De plus, il n’y a pas de méthode destroy dans un stream lisible.

Je crains qu’il n’y ait aucune méthode pour mettre fin au stream avant qu’il ne se termine.

Vous pouvez arrêter de lire du stream. Dans votre cas, le stream de travail est en flowing mode . Par conséquent, cette méthode, csvParser.read() est appelée lorsque des demandes sont formulées pour les parties suivantes de données. Si vous arrêtez d’appeler csvParser.read() alors cet événement csvParser.on("readable",function(){ s’est arrêté de se déclencher.

Il existe une bonne conversation https://groups.google.com/forum/#!msg/nodejs/eGukJUQrOBY/URD8I7tNxRUJ à propos d’un cas similaire.