当使用带有单个套接字的httpAgent时,它会在发送下一个请求之前等待响应吗?
When using an httpAgent with a single socket, will it wait for a response before sending the next request?
我已经将我的httpAgent设置为使用单个套接字(将它的maxSockets属性设置为1),并且它确实使用单个套接字,我已经在控制台上打印了套接字属性,并且其中确实有一个套接字。
问题是:在做请求时,我的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');
}
输出"request x/256 sent" 256次,然后输出响应。
我不想一次发送一个请求,我只是想知道当使用单个套接字时这是否是正确的行为。
是的,这是正常的,因为它是异步的。循环将触发所有请求并将它们推送到eventLoop,它们将开始得到解决,你将获得控制台。包含立即记录的请求数的日志。
使用单个套接字与同步执行请求不同。的确,所有请求都将通过同一个套接字,并且可能一次只解析一个请求。
我要遵循的方法是,只在前一个请求被解决时才触发一个请求,使用promise。一旦一个承诺被解决了,就会触发下一个,以此类推。
相关文章:
- 滚动到容器中的下一个元素-几乎到了
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- AngularJS&JSON-从Previous&下一个对象
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 来自文档或下一个静态父级的事件委派
- angularjs移除焦点上的活动类并添加到下一个项目
- 禁用旋转木马中的下一个按钮和上一个按钮
- 如何在调用下一个请求之前完成第一个Ajax Get请求
- 新的会话cookie直到下一个服务器请求才提供
- 在慢速网络上,上一个Ajax请求会被下一个取消
- 循环遍历 Angular HTTP 请求中的对象,等到响应后再运行下一个循环
- 使用 ajax 请求获取上一个和下一个对象
- Jquery Queue请求集成一次First Request Success,然后调用下一个请求
- 如果请求已被处理,则阻止执行下一个路由器
- 当使用带有单个套接字的httpAgent时,它会在发送下一个请求之前等待响应吗?
- 如何在发出下一个请求之前等待响应
- 使用jQuery执行发布请求并显示下一个页面
- 处理ajax请求的流控制(即只在前一个请求完成后处理下一个请求)