Comment envoyer des requêtes consécutives avec HTTP keep-alive dans node.js?

Je suis en utilisant node.js 0.6.18, et le code suivant fait node.js fermer la connexion TCP entre tous les deux demandes (vérifié avec strace sur Linux). Comment puis-je faire node.js la réutilisation de la même connexion TCP pour plusieurs requêtes HTTP (c'est à dire keep-alive)? Veuillez noter que le serveur web est capable de les garder en vie, il travaille avec d'autres clients. Le serveur web renvoie un bloc de réponse HTTP.

var http = require('http');
var cookie = 'FOO=bar';
function work() {
  var options = {
      host: '127.0.0.1',
      port: 3333,
      path: '/',
      method: 'GET',
      headers: {Cookie: cookie},
  };
  process.stderr.write('.')
  var req = http.request(options, function(res) {
    if (res.statusCode != 200) {
      console.log('STATUS: ' + res.statusCode);
      console.log('HEADERS: ' + JSON.stringify(res.headers));
      process.exit(1)
    }
    res.setEncoding('utf8');
    res.on('data', function (chunk) {});
    res.on('end', function () { work(); });
  });
  req.on('error', function(e) {
    console.log('problem with request: ' + e.message);
    process.exit(1);
  });
  req.end();
}
work()
avez-vous été capable de comprendre cela?
non, je ne connais pas la réponse
vous voudrez peut-être conscient que l'appel de travail() permet de créer une pile de fuite de mémoire. C'est parce que chaque événement de fin va ajouter un nouvel appel au travail(), ne jamais relâcher la pile, à moins que tous les appels de fin de l'événement. Pour contourner ce problème, vous pouvez pousser de travail() hors de portée en appel ".nextTick(de travail);". Cela permettra à la portée de la fin de gestionnaire de résilier.

OriginalL'auteur pts | 2012-06-05