Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用带有单个套接字的httpAgent时,它会在发送下一个请求之前等待响应吗?_Javascript_Node.js_Sockets - Fatal编程技术网

Javascript 当使用带有单个套接字的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 &

我已经将我的httpAgent设置为使用单个套接字(将它的maxSockets属性设置为1),并且它确实使用单个套接字,我已经在控制台上打印了sockets属性,其中实际上有一个套接字

问题是:当执行请求时,我的httpAgent不会在发送下一个请求之前等待响应,这是正常行为吗?它不应该为每个请求使用一个套接字吗

这是我的代码:

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代理是否真的应该这样工作。你的回答非常翔实,谢谢。