diff --git a/README.md b/README.md index e66db3c..253a811 100644 --- a/README.md +++ b/README.md @@ -289,7 +289,13 @@ These are the available config options for making requests. Only the `url` is re // `maxRedirects` defines the maximum number of redirects to follow in node.js. // If set to 0, no redirects will be followed. - maxRedirects: 5 // default + maxRedirects: 5, // default + + // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http + // and https requests, respectively, in node.js. This allows to configure options like + // `keepAlive` that are not enabled by default. + httpAgent: new http.Agent({ keepAlive: true }), + httpsAgent: new https.Agent({ keepAlive: true }) } ``` diff --git a/lib/adapters/http.js b/lib/adapters/http.js index 959bed9..21b02ae 100644 --- a/lib/adapters/http.js +++ b/lib/adapters/http.js @@ -61,13 +61,17 @@ module.exports = function httpAdapter(config) { var urlPassword = urlAuth[1] || ''; auth = urlUsername + ':' + urlPassword; } + + var isHttps = parsed.protocol === 'https:'; + var agent = isHttps ? config.httpsAgent : config.httpAgent; + var options = { hostname: parsed.hostname, port: parsed.port, path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''), method: config.method, headers: headers, - agent: config.agent, + agent: agent, auth: auth }; @@ -79,12 +83,12 @@ module.exports = function httpAdapter(config) { var transport; if (config.maxRedirects === 0) { - transport = parsed.protocol === 'https:' ? https : http; + transport = isHttps ? https : http; } else { if (config.maxRedirects) { options.maxRedirects = config.maxRedirects; } - transport = parsed.protocol === 'https:' ? httpsFollow : httpFollow; + transport = isHttps ? httpsFollow : httpFollow; } // Create the request