Bạn có thể sử dụng phương thức Agent () mới để tạo một phiên bản của tác nhân trong Node. Phương thức http.request () sử dụng globalAgent từ mô-đun 'http' để tạo một phiên bản http.Agent tùy chỉnh.
Cú pháp
new Agent({options})
Tham số
Hàm trên có thể chấp nhận các Tham số sau -
-
tùy chọn - Các tùy chọn này sẽ chứa các tùy chọn có thể định cấu hình có thể được đặt trên một Tác nhân trong khi tạo. Dưới đây là các trường / tùy chọn mà Đại lý có thể có -
-
keepAlive - Phương pháp này giữ cho các socket luôn xung quanh cho dù có bất kỳ yêu cầu nào còn tồn đọng hay không, nhưng giữ chúng cho bất kỳ yêu cầu nào trong tương lai mà không thực sự thiết lập lại kết nối TCP. Người ta có thể sử dụng kết nối 'đóng' để đóng kết nối này. Giá trị mặc định:false.
-
keepAliveMsecs - Khi sử dụng tùy chọn keepAlive là true, tùy chọn này xác định độ trễ ban đầu cho các gói TCP keep-Alive. Giá trị mặc định là 1000.
-
maxSockets - Tùy chọn này xác định số lượng ổ cắm tối đa được phép trên mỗi máy chủ. Theo mặc định, giá trị này là vô cùng.
-
maxTotalSockets - Tổng số ổ cắm được phép cho tất cả các máy chủ. Mỗi yêu cầu sử dụng một ổ cắm mới cho đến khi đạt đến giới hạn. Giá trị mặc định là Vô cực.
-
maxFreeSockets - Đây là số lượng ổ cắm miễn phí tối đa có thể được mở ở trạng thái trống. Giá trị mặc định là:256.
-
lập lịch - Đây là chiến lược lập lịch có thể được áp dụng trong khi chọn ổ cắm miễn phí tiếp theo để sử dụng. Lịch trình có thể là 'năm mươi' hoặc 'cuộc sống'.
-
thời gian chờ - Biểu thị thời gian chờ của ổ cắm tính bằng mili giây.
-
Ví dụ
Tạo một tệp có tên - agent.js và sao chép đoạn mã bên dưới. Sau khi tạo tệp, sử dụng lệnh sau để chạy mã này như được hiển thị trong ví dụ bên dưới -
node agent.js
agent.js
// 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);
Đầu ra
C:\home\node>> node agent.js Succesfully created connection with agent: function toString() { [native code] } Succesfully created connection with alive agent: function toString() { [native code] }
Ví dụ
Mô-đun 'agentkeepalive' cung cấp tính linh hoạt tốt hơn trong khi cố gắng tạo một ổ cắm hoặc đại lý. Chúng tôi sẽ sử dụng mô-đun này trong ví dụ dưới đây để hiểu rõ hơn.
Cài đặt
npm install agentkeepalive --save
Mã chương trình
// 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();
Đầu ra
C:\home\node>> 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' }