async-keepalive v0.2.1
electrode-keepalive
electrode-keepalive provides an HttpAgent capable of maintaining available sockets using IP address instead of hostname lookup. This allows for graceful handling of dns changes/failover when changes occur in routing configuration. This is particularly important when using keep-alive enabled connections. It resolves part of the problems in this issue
Usage
const ElectrodeKeepAlive = require("electrode-keepalive");
const opts = {
keepAlive: true,
keepAliveMsecs: 30000, // socket send keep alive ping every 30 secs
maxSockets: 100,
maxFreeSockets: 10
};
const keepAlive = new ElectrodeKeepAlive(opts);
const dnsOptions = {};
keepAlive.preLookup("www.google.com", dnsOptions, (err) => {
request({url: "http://www.google.com", agent: keepAlive.agent});
});Since this module works by overriding
http.Agent's synchronousgetNamemethod to return the IP instead of hostname, it has to use a pre-populated DNS mapping. Before the mapping is populated, it can't use IP. To avoid that in your first request, you should always call thepreLookupmethod first.
APIs
Properties
agent
instance.agent - Read only instance property to access the http/https agent.
https
instance.https - Read only instance property. If true, then the agent is an https agent.
static DNS_CACHE
ElectrodeKeepAlive.DNS_CACHE - Internal DNS mapping object.
Methods
constructor
constructor(options)
Creates an instance of ElectrodeKeepAlive.
optionsshould be the default http agent settings that are passed through to the underlying implementation. Additionally the following options are supported:https- If true, then creates an https Agent.expiry- The duration (in milliseconds) that ip entries in the DNS mapping will be refreshed. Default is 5000ms.
preLookup
instance.preLookup(host, options, callback)
Allows ElectrodeKeepAlive to do a DNS lookup on the host first to populate its DNS mapping.
The arguments matches Node dns module lookup.
clearDnsCache
instance.clearDnsCache() - Wipes out current DNS mapping.
getName
instance.getName(options)
The internal method to override http agent's default getName. Not intended for public use.
8 years ago