我在下面的代码中看到了一个奇怪的行为。
请求req成功时调用cb1。 之后再调用cb2,这似乎不对。
var result = {};
// populate options object
var req = https.request(options, function(response) { // cb1
callback(null, result);
});
req.on('error', function(err) { // cb2
callback(err, result);
});
req.setTimeout(30000); // 5 mins
req.setNoDelay(true);
if (requestBody) {
req.write(requestBody);
}
req.end();
如果https请求已经成功( response.statuscode 在cb1中设置为200),是否可以在以后的同一个请求对象上调用“on error”处理程序?
使用
调用cb2函数错误:读取ECONNRESET
我的假设是永远不会发生这种情况,因此'callback'有一些代码,如果对同一个传入请求调用两次,会导致我的服务器崩溃。
此外,我在https模块上使用以下2个设置。
https.globalAgent.maxSockets = 65000;
https.globalAgent.keepAlive = true;
keepAlive设置是否可能以某种方式保持与后端服务器的连接活动,并且当服务器终止此连接时,在同一个req对象上再次调用cb2?