Wie zu senden, aufeinander folgende Anfragen mit der HTTP-keep-alive in node.js?

Ich bin mit node.js 0.6.18, und der folgende code macht node.js schließen der TCP-Verbindung zwischen zwei Anfragen (überprüft mit strace auf Linux). Wie muss ich das machen node.js die Wiederverwendung der gleichen TCP-Verbindung für mehrere HTTP-Anfragen (keep-alive)? Bitte beachten Sie, dass der webserver der Lage ist, keep-alive, es funktioniert auch mit anderen clients. Der webserver gibt eine aufgeteilte HTTP-Antwort.

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()
  • konnten Sie jemals herausfinden?
  • Nein, ich kenne die Antwort nicht
  • möchten Sie vielleicht bewusst zu sein, dass das aufrufen von work() erzeugt einen stack-Speicher-Leck. Dies ist, weil jedes Ende-Ereignis wird ein neuer Anruf auf der Arbeit(), nie loslassen den stack, es sei denn, jeder Aufruf Ende der Veranstaltung abgeschlossen ist. Um dies zu umgehen, können Sie drücken wollen arbeiten() out of scope durch den Aufruf "Prozess.nextTick(Arbeit);". Wird dieser Spielraum von den Ende-handler zu kündigen.
InformationsquelleAutor pts | 2012-06-05
Schreibe einen Kommentar