Javascript 当使用带有单个套接字的httpAgent时,它会在发送下一个请求之前等待响应吗?
我已经将我的httpAgent设置为使用单个套接字(将它的maxSockets属性设置为1),并且它确实使用单个套接字,我已经在控制台上打印了sockets属性,其中实际上有一个套接字 问题是:当执行请求时,我的httpAgent不会在发送下一个请求之前等待响应,这是正常行为吗?它不应该为每个请求使用一个套接字吗 这是我的代码:Javascript 当使用带有单个套接字的httpAgent时,它会在发送下一个请求之前等待响应吗?,javascript,node.js,sockets,Javascript,Node.js,Sockets,我已经将我的httpAgent设置为使用单个套接字(将它的maxSockets属性设置为1),并且它确实使用单个套接字,我已经在控制台上打印了sockets属性,其中实际上有一个套接字 问题是:当执行请求时,我的httpAgent不会在发送下一个请求之前等待响应,这是正常行为吗?它不应该为每个请求使用一个套接字吗 这是我的代码: var https = require('https'); https.globalAgent.maxSockets = 1; for (var i = 0; i &
var https = require('https');
https.globalAgent.maxSockets = 1;
for (var i = 0; i < 256; i++) {
https.get('https://encrypted.google.com/', function(res) {
res.on('data', function(d) {
process.stdout.write('\nresponse');
});
}).on('error', function(e) {
console.error(e);
});
console.log('request ' + (i + 1) + '/256 sent');
}
var https=require('https');
https.globalAgent.maxSockets=1;
对于(变量i=0;i<256;i++){
https.get('https://encrypted.google.com/,函数(res){
res.on('数据',功能(d){
process.stdout.write('\nresponse');
});
}).on('error',函数(e){
控制台错误(e);
});
log('request'+(i+1)+'/256 sent');
}
它打印出“请求x/256已发送”256次,然后打印响应
我不想一次发送一个请求,我只想知道使用单个套接字时这是否正确
提前感谢。是的,这是正常的,因为它是异步的。循环将触发所有请求并将它们推送到eventLoop,它们将开始得到解决,您将获得console.logs,其中包含立即记录的请求数 使用单个套接字与同步执行请求不同。的确,所有请求都将通过同一个套接字,并且一次可能只有一个得到解决
只有在前一个请求得到解决时,我才会使用承诺的方法来发出一个请求。一旦一个承诺得到解决,就解雇下一个,以此类推。谢谢!我不想同步发送它们,我只是想知道HTTP代理是否真的应该这样工作。你的回答非常翔实,谢谢。