类: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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。