当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js http.Agent用法及代码示例


类:http.Agent

添加于:v0.3.4

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
});

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 http.Agent。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。