CNode

关于keep-alive

问答
Llaoqiren发布于9 年前最后回复9 年前4 回复4105 浏览0 收藏

每隔3000ms调用一次http请求,用http.Agent来管理keep-alive的socket,然而我发现当我设置keepAliveMsecs不管多小,后面的请求都会共用第一个socket,请问这是怎么回事儿呢?

const http = require('http'); const url = require('url');

let options = url.parse('http://localhost:9009'); options.headers = { 'connection':'keep-alive' } options.agent = new http.Agent({ keepAlive: true, keepAliveMsecs: 20 }); console.log(options) let sockets = []; function request(){ http.get(options,(res)=>{ console.log(res.headers); res.pipe(process.stdout); }).on('socket',socket=>{ if(sockets.indexOf(socket) === -1){ console.log('new socket created'); sockets.push(socket); } else { console.log('share the socket!'); } }) }

setInterval(request,3000)

查看回复

回复 (4)

Y
Yuki-Minakami#1·9 年前

server 的keepAliveTimeoutt默认5s有没有改

L
laoqiren#2·9 年前
引用 Yuki-Minakamiserver 的keepAliveTimeoutt默认5s有没有改

@Yuki-Minakami 但是客户端可以自己决定什么时候断开啊

L
laoqiren#4·9 年前
引用 Yuki-Minakami@laoqiren 说得也是,我回去试试

@Yuki-Minakami 另外就算我每隔5s+发一个请求,同样也是这种情况。

参与回复
登录后即可参与回复。登录