如果已注册response
事件的请求中止,则不再遵守maxSockets
限制。它似乎只在响应包含一些数据时才会发生。
经测试的版本: v4.1.1和v5.1.0
var http = require('http');
http.globalAgent.maxSockets = 3;
for (var i = 0; i < 100; i++) {
var request = http.get('http://127.0.0.1:8080', function () {
// just register a listener...
});
request.setTimeout(1000, function () {
console.log('T')
this.abort();
});
}
require('http').createServer(function (reqest, response) {
console.log('R');
response.end('hello');
}).listen(8080);
服务器输出为:
$ node server.js
R
R
R
# 1s timeout here...
R
R
R
R
R
R
# 1s timeout here...
R
R
R
R
R
R
R
R
R
R
R
R
# 1s timeout here...
[...]
似乎每次maxSockets
乘以2(3,6,12,24等),即使其值不变。我期待的是3组。
恢复响应,而不是中止请求,在这种情况下正常工作。