0

我在下面的代码中看到了一个奇怪的行为。

请求 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 请求已经成功(在 cb1 中response.statuscode设置为 200),是否可以稍后在同一个请求对象上调用“错误”处理程序?

调用 cb2 函数

错误:读取 ECONNRESET

我的假设是这永远不会发生,因此“回调”有一些代码,如果为相同的传入请求调用两次,会导致我的服务器崩溃。

另外,我在 https 模块上使用了以下 2 个设置。

https.globalAgent.maxSockets = 65000;
https.globalAgent.keepAlive = true;

keepAlive 设置是否有可能以某种方式保持与后端服务器的连接处于活动状态,并且当服务器终止此连接时,在同一个 req 对象上再次调用 cb2 ?

4

0 回答 0