You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if(freeLen){// we have a free socket, so use that.varsocket=this.freeSockets[name].shift();debug('have free socket');
freesockets = [1][2][3][4][5]
# a socket is freed
freesockets = [1][2][3][4][5][6]
# new request arrive, current algorithm use "shift"
freesockets = [2][3][4][5][6]
# there might rarely be a timeout of any sockets.
an alternative could be to use freesockets.pop() to minimize the number of sockets opened
freesockets = [1][2][3][4][5]
# a socket is freed
freesockets = [1][2][3][4][5][6]
# new request arrive, using pop
freesockets = [1][2][3][4][5]
# first socket timeout
freesockets = [2][3][4][5]
You'd probably need to replace addRequest and curry the selected algorithm into the original'ish version.
A quick thought here... While it would be nice to be able to have the algorithm choice, I believe the intended behavior of keep-alives is to keep connections alive to reduce the overhead of establishing connections. The max number of free connections is configurable, so I'm not sure if this functionality has a ton of value.
Activity
fengmk2 commentedon Sep 2, 2014
@syndr0m good point! Can you impl this with a pr?
FredKSchott commentedon Oct 27, 2014
@syndr0m this sounds awesome!
fengmk2 commentedon Jan 29, 2015
Any progress?
fengmk2 commentedon Jan 29, 2015
I think use pop instead of shift is enough
tony-gutierrez commentedon Oct 20, 2018
Did this ever happen?
bfdill commentedon Mar 15, 2019
fyi, the referenced code is not currently in this project:
https://github.com/nodejs/node/blob/master/lib/_http_agent.js#L165
You'd probably need to replace addRequest and curry the selected algorithm into the original'ish version.
A quick thought here... While it would be nice to be able to have the algorithm choice, I believe the intended behavior of keep-alives is to keep connections alive to reduce the overhead of establishing connections. The max number of free connections is configurable, so I'm not sure if this functionality has a ton of value.
dkMorlok commentedon Jun 27, 2020
Maybe related/solved by this nodejs/node#33278 ?