Node.js new Agent() Method - GeeksforGeeks

26 Aug, 2020
The Node.js HTTP API is low-level so that it could support the HTTP applications. In order to access and use the HTTP server and client, we need to call them (by ‘require(‘http’)‘). HTTP message headers are represented as JSON Format.
The new Agent({}) (Added in v0.3.4) method is an inbuilt application programming interface (API) of the ‘http’ module in which default globalAgent is used by http.request() which should create a custom http.Agent instance.
Syntax:
new Agent({options})
Parameters: This function accepts a single object parameter as mentioned above and described below:
options <Object> It is the configurable options that could be set on the agent.
keepAlive <boolean>: The Default value set is false. It still Keeps the sockets around whether there are outstanding requests or not, so it could be used for future requests without re-establishing the connection (TCP). The keep-alive header connection is sent while using an agent, and a ‘close’ connection is used to close the connection.
keepAliveMsecs <number>: The Default value set is false. It denotes the initial delay for TCP Keep-Alive packets and if the keepAlive option is false or undefined, gets ignored.
maxSockets <number>: The Default value set is Infinity. It allows the maximum number of sockets per host and until the maximum is reached, each request uses a new socket.
maxTotalSockets <number>: The Default value set is Infinity. It allows the maximum number of sockets for all hosts in total and until the maximum is reached, each request uses a new socket.
maxFreeSockets <number>: The Default value set is 256. In order to leave open in a free state, it uses the maximum number of sockets and it is relevant only if keepAlive is set to true.
scheduling <string>: The Default scheduling is FIFO. It is a strategy of picking the next free socket to schedule and use. It is of two type ‘FIFO‘ or ‘LIFO‘. ‘LIFO‘ (Last In First Out) selects the socket which is most recently used, while ‘FIFO’ (First In First Out) selects the socket which is least recently used.
timeout <number>: It counts the socket timeout in milliseconds and sets the timeout when the socket is created.
The below examples illustrate the use of new Agent({}) method in Node.js.
Example 1: Filename: index.js
// Node.js program to demonstrate the // new agent({}) method   // Importing http moduleconst http = require('http');var agent = new http.Agent({});  // Creating new agentconst aliveAgent = new http.Agent({ keepAlive: true, maxSockets: 0, maxSockets: 5,  });  // Creating new agentvar agent = new http.Agent({});  // Creating new connectionvar createConnection = aliveAgent.createConnection;  // Creating new connectionvar createConnection = agent.createConnection;console.log('Connection successfully created...');  // Printing the connectionconsole.log(createConnection);console.log('Connection successfully created...');  // Printing the connectionconsole.log('Connection: ', createConnection);
Run index.js file using the following command:
node index.js
Output:
Connection successfully created...
[Function: connect]
Connection successfully created...
Connection:  [Function: connect]
Another Module agentkeepalive fits better compatible with Http, which makes it easier to handle requests. In order to use the ‘agentkeepalive’ module, we need to install the NPM (Node Package Manager) and the following (on cmd).
// Creates package.json file
>> npm init 

// Installs express module
>> npm install agentkeepalive --save   OR
>> npm i agentkeepalive -s 
Import agentkeepalive module: Import agentkeepalive module and store returned instance into a variable.
const Agent = require('agentkeepalive');

Example 2: Filename: index.js
// Node.js program to demonstrate the // new agent({}) method   // Importing http moduleconst http = require('http');// Importing agentkeepalive moduleconst Agent = require('agentkeepalive');// Creating new agentconst keepAliveAgent = new Agent({});  // Options objectconst options = {  host: 'geeksforgeeks.org',  port: 80,  path: '/',  method: 'GET',  agent: keepAliveAgent,};  // Requesting via http server moduleconst req = http.request(options, (res) => {  // console.log(require('util').inspect(res, depth=0));  // Printing statuscode  console.log("StatusCode: ", res.statusCode);  // Printing headers  console.log("Headers: ", res.headers);});  // Printing agent optionsconsole.log("Agent Options: ", req.agent.options);// console.log(req.agent.sockets);req.end();
Run index.js file using the following command:
node index.js
Output:
>> Agent Options: { keepAlive: true,
 freeSocketTimeout: 15000,
 timeout: 30000,
 socketActiveTTL: 0,
 path: null}
>> StatusCode:  301
>> Headers:  { date: ‘Wed, 19 Aug 2020 11:19:23 GMT’,
 server: ‘Apache’,
 location: ‘https://www.geeksforgeeks.org/’,
 ‘content-length’: ‘238’,
 ‘keep-alive’: ‘timeout=5, max=100’,
 connection: ‘Keep-Alive’,
 ‘content-type’: ‘text/html; charset=iso-8859-1’}
Reference: https://nodejs.org/api/http.html#http_new_agent_options
Node.js-Methods
Node.js
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Express.js express.Router() Function
How to update Node.js and NPM to next version ?
Node.js fs.readFileSync() Method
How to update NPM ?
Difference between promise and async await in Node.js
Express.js express.Router() Function
Top 10 Projects For Beginners To Practice HTML and CSS Skills
How to fetch data from an API in ReactJS ?
Difference between var, let and const keywords in JavaScript
How to insert spaces/tabs in text using HTML/CSS?