池连接 - 监视Node.js请求库中的并发请求?

时间:2015-07-19 17:45:45

标签: javascript node.js connection-pooling node-request

我向其他服务器发送了大量请求,并希望限制它们以免使服务器过载。我的印象是,这可以使用pool中的options参数来完成,但我不确定我是否正确这样做。

我希望能够跟踪发送请求的时间,因为我正在尝试建立双工连接,并且需要确保同时发送相应的GET和POST请求

以下是我正在尝试的简化示例:

var request = require('request');

var options = {
    'url': 'http://www.google.com',
    'pool': {
        'maxSockets': 3
    }   
};
for (var i = 0; i < 100; i++) {
    request.get(options, (function(j) {
        return function(err, res, body) {
            console.log(j);
        }
    })(i)); 
}

实际发出请求时是否发生了事件?有没有办法让我跟踪每个请求的发送时间和顺序?

1 个答案:

答案 0 :(得分:0)

我在Node.js documentation中找到了这个:

  

事件:'socket'#

     

function(socket){}

     

将套接字分配给此请求后发出。

您可以使用它来监视连接,因为它们被分配了这样的套接字:

http.get(options, function(res) {
    // Do stuff
}).on("socket", function (socket) {
    socket.on("connection") {
        // record connection
    };
});

请求库发出相同的事件,因为它只是内置http模块的包装器。