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连接。
我误解或做错了什么!!