如何使用http.Agent重用TCP连接

时间:2018-08-10 11:49:54

标签: node.js http https

nodejs中的http.Agent类对我来说还不清楚。也许是因为英语是我的第二语言。

我想利用代理服务器内部tcp连接的重用。代理服务器允许范围请求,因此在我的脑海中,我可以创建一个代理并将其作为选项传递给该请求,并且它将仅使用一个tcp连接。(到同一Host:Port)

例如:

const http = require('http')

let httpAgent = new http.Agent({keepAlive: true})

http.createServer(async function (req, res) {
  //Server that makes request to external urls and send back the result to the user.
  let options = {
    ...
    url: 'external url...'
    agent: httpAgent
  }
  if(req.headers.range){
    options.headers['Range'] = req.headers.range
  }

  let request = http.request(options)
  request.end()
  ....
  request.pipe(res)
})

此方法的问题在于,每个范围请求都会创建一个新的套接字,并将其添加到代理内的套接字列表中。 当我跑步时

netstat -anp | grep node

我可以看到每个请求都创建了一个新的套接字。我一直在等待的是重新使用相同的TCP连接。

我误解或做错了什么!!

0 个答案:

没有答案