HTTP keep-alive dans node.js

Je suis en train de mettre en place un client HTTP pour garder la connexion sous-jacente ouvert (keep-alive) node.js mais il semble que le comportement ne correspond pas à la documentation (http://nodejs.org/api/http.html#http_class_http_agent).

Je suis entrain de créer un nouveau HTTP agent, réglage de la maxSockets propriété 1 et demande une url (par exemple http://www.twilio.com/) chaque seconde.

Il semble que, pour chaque demande, le socket est fermé et un nouveau socket est créée.
J'ai testé avec node.js 0.10.25 et 0.10.36 sous Ubuntu 14.04.

Quelqu'un a été capable de se maintenir en vie au travail?

Voici le code:

var http = require("http");

var agent = new http.Agent();
agent.maxSockets = 1;

var sockets = [];

function request(hostname, path, callback) {
    var options = {
        hostname: hostname,
        path: path, 
        agent: agent, 
        headers: {"Connection": "keep-alive"}
    };
    var req = http.get(options, function(res) {
        res.setEncoding('utf8');
        var body = "";
        res.on('data', function (chunk) {
            body += chunk;
        });
        res.on('end', function () {
            callback(null, res, body);
        });
    });
    req.on('error', function(e) {
        return callback(error);
    });
    req.on("socket", function (socket) {
        if (sockets.indexOf(socket) === -1) {
            console.log("new socket created");
            sockets.push(socket);
            socket.on("close", function() {
                console.log("socket has been closed");
            });
        }
    });
}

function run() {
    request('www.twilio.com', '/', function (error, res, body) {
        setTimeout(run, 1000);
    });
}

run();
Ce n' console.dir(res.headers.connection) montrer à l'intérieur de votre http.get() de rappel?
J'avais déjà vérifié, et l'hôte retourne "Connection: keep-alive" en-tête de la réponse, indiquant qu'il accepte de garder la connexion ouverte.

OriginalL'auteur quentinadam | 2015-01-30