Estoy usando node.js 0.6.18, y el siguiente código hace que node.js cierre la conexión TCP entre cada dos solicitudes (verificado con strace
en Linux). ¿Cómo hago que node.js reutilice la misma conexión TCP para múltiples solicitudes HTTP (es decir, keep-alive)? Tenga en cuenta que el servidor web es capaz de mantener vivo, funciona con otros clientes. El servidor web devuelve una respuesta HTTP fragmentada.¿Cómo enviar solicitudes consecutivas con HTTP keep-alive en node.js?
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()
fuera usted capaz de averiguar alguna vez esto ? –
no, no sé la respuesta – pts
es posible que desee saber que llamar a work() creará una pérdida de memoria de la pila. Esto se debe a que cada evento final agregará una nueva llamada a work(), nunca liberará la pila a menos que se complete el evento final de cada llamada. Para solucionar esto, es posible que desee sacar work() del ámbito llamando a "process.nextTick (work);". Esto permitirá que el alcance del controlador final termine. – thesmart