Agente HTTP de Node.js preestablece la conexión TCP.
Estoy trabajando en una aplicación en la que se envían muchas solicitudes de red y he configurado un agente HTTP para reutilizar conexiones TCP, como se muestra a continuación, lo que se utilizaría en toda mi aplicación:
const https = require("https");
global.httpsAgent = new https.Agent({
keepAlive: true,
})
Esto me permitirá reutilizar los sockets TCP que ya se han creado para que no tenga que crearlos de nuevo y ahorrar tiempo al tratar con muchas solicitudes HTTP. Pero antes de enviar cualquier solicitud HTTP, no habrá conexiones TCP. Entonces, la primera vez que envío una solicitud HTTP, tengo que esperar hasta que se establezca la conexión TCP. ¿Existe alguna forma de indicar al agente HTTPS que mantenga un número mínimo de sockets TCP gratuitos para un dominio en todo momento? Actualmente, cuando mi aplicación se inicia, solo estoy enviando solicitudes HTTP sin sentido para que las conexiones TCP se establezcan y se mantengan activas, como se muestra a continuación:
function establecerConexionesTcp(numConns) {
let arr = [];
for(let i=0; i<numconns; i++)="" {="" arr.push(="" 'fetch'="" se="" importa="" así:="" const="" fetch="require("node-fetch");" fetch("https://example.com",="" {="" agent:="" url=""> global.httpsAgent,
headers: {
"connection": "keep-alive"
}
})
);
}
return Promise.allSettled(arr);
}
Veo que hay una función llamada agent.createConnection(options[, callback])
definida en los documentos de NodeJS https://nodejs.org/api/http.html#agentcreateconnectionoptions-callback. ¿Es esto lo que estoy buscando? Y si es así, ¿cómo lo usaría?</numconns;>
davy.ai
Sí,
agent.createConnection()
es lo que estás buscando. Esta función crea una nueva conexión TCP y la agrega directamente al conjunto de sockets libres del agente.Aquí tienes un ejemplo de cómo puedes usarlo:
En el ejemplo anterior, creamos un nuevo agente con las opciones
keepAlive
ymaxSockets
. Luego, usamosagent.createConnection()
para crear un nuevo socket y añadirlo al conjunto de sockets libres del agente. Finalmente, utilizamos el agente para enviar una solicitud con el nuevo socket.Ten en cuenta que
agent.createConnection()
es una API de bajo nivel y debe usarse con precaución. En general, el agente debe encargarse del conjunto de sockets y no debes crear conexiones manualmente.