You can create an agent instance in Node.js using the new Agent() method. The http.request() method creates a custom http.Agent instance using the globalAgent from the "http" module.
new Agent({options})
The above function can accept the following parameters−
options < /strong> – These options will contain configurable options that can be set on the agent at creation time. Following are the fields/options a proxy can have -
keepAlive - This method keeps the socket whether it has any outstanding requests or not, but retains them to For use by any future requests without actually re-establishing the TCP connection. This connection can be closed using Close Connection. Default value: false.
keepAliveMsecs - This option defines the initial delay for TCP keep-Alive packets when the keepAlive option is set to true. The default value is 1000.
maxSockets - This option defines the maximum number of sockets allowed per host. By default, this value is infinity.
maxTotalSockets – The total number of sockets allowed for all hosts. Each request uses a new socket until the limit is reached. The default value is infinity.
maxFreeSockets - This is the maximum number of free sockets that can be kept open in the idle state. The default value is: 256.
Scheduling - This is the scheduling policy that can be applied when selecting the next free socket to use. Schedule can be "fifo" or "lifo".
Timeout - Represents the socket timeout in milliseconds.
Create a file called agent.js and copy the following code snippet. After creating the file, run this code using the following command as shown in the example below -
node agent.js
agent.js
Live Demo
// Node.js program to demonstrate the creation of new Agent // Importing the http module const http = require('http'); // Creating a new agent var agent = new http.Agent({}); // Defining options for agent const aliveAgent = new http.Agent({ keepAlive: true, maxSockets: 5, }); // Creating connection with alive agent var aliveConnection = aliveAgent.createConnection; // Creating new connection var connection = agent.createConnection; // Printing the connection console.log('Succesfully created connection with agent: ', connection.toString); console.log('Succesfully created connection with alive agent: ', aliveConnection.toString);
C:\homeode>> node agent.js Succesfully created connection with agent: function toString() { [native code] } Succesfully created connection with alive agent: function toString() { [native code] }
The "agentkeepalive" module provides better flexibility when trying to create sockets or agents. We will use this module in the following examples for better understanding.
Installation
npm install agentkeepalive --save
Program code
// Node.js program to demonstrate the creation of new Agent // Importing the http module const http = require('http'); // Importing the agentkeepalive module const Agent = require('agentkeepalive'); // Creating a new agent const keepAliveAgent = new Agent({}); // Implementing some options const options = { host: 'tutorialspoint.com', port: 80, path: '/', method: 'GET', agent: keepAliveAgent, }; // Requesting details via http server module const req = http.request(options, (res) => { // Printing statuscode, headers and other details // received from the request console.log("StatusCode: ", res.statusCode); console.log("Headers: ", res.headers); }); // Printing the agent options console.log("Agent Options: ", req.agent.options); req.end();
C:\homeode>> node agent.js Agent Options: { socketActiveTTL: 0, timeout: 30000, freeSocketTimeout: 15000, keepAlive: true, path: null } StatusCode: 403 Headers: { date: 'Sun, 25 Apr 2021 08:21:14 GMT', server: 'Apache', 'x-frame-options': 'SAMEORIGIN', 'last-modified': 'Thu, 16 Oct 2014 13:20:58 GMT', etag: '"1321-5058a1e728280"', 'accept-ranges': 'bytes', 'content-length': '4897', 'x-xss-protection': '1; mode=block', vary: 'User-Agent', 'keep-alive': 'timeout=5, max=100', connection: 'Keep-Alive', 'content-type': 'text/html; charset=UTF-8' }
The above is the detailed content of Create a proxy in Node.js. For more information, please follow other related articles on the PHP Chinese website!