Node.js https.demande avec keep-alive-tête

Je veux tirer les posts d'un utilisateur Facebook mur.

L'extrait de code suivant fonctionne, mais elle ne se termine:

var https = require('https');

facebookWall = function(user) {
  var options = {
    host: 'graph.facebook.com',
    port: 443,
    path: '/me/home?access_token=' + user.facebook_token + '&since=' + encodeURIComponent(user.facebook_timestamp),
    method: 'GET',
    headers: {
      'Connection':'keep-alive'
    }
  };

  var req = https.request(options)
  .on('response', function(response) {
    var body = '';
    response.on('data', function(data) {
      body += data;
      try {
        var wallPosts = JSON.parse(body);
        console.log("user " + user.id + " has " + wallPosts.data.length + " new items on their wall");
      }
      catch (e) {
        //console.log("waiting for more data chunks...");
      }
    })
  });
  req.end();

  req.on('error', function(e) {
    console.error(e);
  });
}

Je pense que c'est causé par le 'Connection':'keep-alive' en-tête. Quand je le remplace par 'Connection':'close' le script sera terminé lorsque toutes les données ont été récupérées à partir de facebook.

J'espère être en mesure d'utiliser le keep-alive-tête pour éviter d'avoir à créer une nouvelle connexion SSL pour chaque demande. J'ai des milliers de demandes et avec le keep-alive-tête, il se termine en quelques secondes, par opposition à quelques minutes sans le keep-alive-tête.

Personne ne sait comment faire cela? Je suis assez nouveau à l'Node.JS donc si je suis absent quelque chose d'évident, je m'en excuse.

OriginalL'auteur Teetotum | 2011-06-13