類:http.Agent
Agent
負責管理 HTTP 客戶端的連接持久性和重用。它為給定的主機和端口維護一個待處理請求的隊列,為每個請求重用一個套接字連接,直到隊列為空,此時套接字或者被銷毀,或者被放入一個池中,以便再次用於請求到相同的主機和端口。是銷毀還是池化取決於 keepAlive
option 。
池連接為它們啟用了 TCP Keep-Alive,但服務器仍可能關閉空閑連接,在這種情況下,它們將從池中刪除,並且當對該主機和端口發出新的 HTTP 請求時,將建立新的連接。服務器也可能拒絕允許同一連接上的多個請求,在這種情況下,必須為每個請求重新建立連接,並且不能被池化。 Agent
仍會向該服務器發出請求,但每個請求都將通過新連接發生。
當客戶端或服務器關閉連接時,它會從池中刪除。池中任何未使用的套接字都將被取消引用,以免在沒有未完成的請求時保持 Node.js 進程運行。 (見
)。socket.unref()
當
destroy()
Agent
實例不再使用時,這是一個很好的做法,因為未使用的套接字會消耗操作係統資源。
當套接字發出 'close'
事件或 'agentRemove'
事件時,將從代理中刪除套接字。當打算長時間保持一個 HTTP 請求打開而不將其保留在代理中時,可以執行以下操作:
http.get(options, (res) => {
// Do stuff
}).on('socket', (socket) => {
socket.emit('agentRemove');
});
代理也可用於單個請求。通過將{agent: false}
作為http.get()
或http.request()
函數的選項提供,一次性使用帶有默認選項的Agent
將用於客戶端連接。
agent:false
:
http.get({
hostname: 'localhost',
port: 80,
path: '/',
agent: false // Create a new agent just for this one request
}, (res) => {
// Do stuff with response
});
相關用法
- Node.js http.Agent.reuseSocket(socket, request)用法及代碼示例
- Node.js http.Agent.keepSocketAlive(socket)用法及代碼示例
- Node.js http.ServerResponse.setTimeout()用法及代碼示例
- Node.js http.server.keepAliveTimeout用法及代碼示例
- Node.js http.validateHeaderValue(name, value)用法及代碼示例
- Node.js http.ClientRequest.maxHeadersCount用法及代碼示例
- Node.js http.IncomingMessage.httpVersion用法及代碼示例
- Node.js http.IncomingMessage.method用法及代碼示例
- Node.js http.IncomingMessage.aborted用法及代碼示例
- Node.js http.OutgoingMessage.removeHeader(name)用法及代碼示例
- Node.js http.IncomingMessage.complete用法及代碼示例
- Node.js http.validateHeaderName()用法及代碼示例
- Node.js http.IncomingMessage.rawTrailers用法及代碼示例
- Node.js http.OutgoingMessage.hasHeader(name)用法及代碼示例
- Node.js http.IncomingMessage.statusMessage用法及代碼示例
- Node.js http.ServerResponse.socket用法及代碼示例
- Node.js http.ServerResponse.statusCode用法及代碼示例
- Node.js http.ClientRequest.setHeader()用法及代碼示例
- Node.js http.ClientRequest.socket用法及代碼示例
- Node.js http.server.close()用法及代碼示例
- Node.js http.IncomingMessage.rawHeaders用法及代碼示例
- Node.js http.ClientRequest.method用法及代碼示例
- Node.js http.ServerResponse.getHeader()用法及代碼示例
- Node.js http.server.headersTimeout用法及代碼示例
- Node.js http.ClientRequest.reusedSocket用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 http.Agent。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。