Keepalive через несколько команд извлечения в NodeJS - PullRequest
0 голосов
/ 09 ноября 2019

Наше приложение NodeJS в основном является прокси-сервером: оно принимает входящие HTTP-запросы GET от клиента A и выполняет обратный запрос к внутреннему HTTP-серверу B, отображая данные, которые оно получает от B, в форму, подходящую для A. Каждый клиентский запросприводит к одному запросу к серверу B.

Чтобы максимизировать производительность, мы хотели бы поддерживать соединение TCP с B между последовательными запросами клиентов. Поэтому, если все клиенты A, X, Y и Z попадают в наше приложение, скажем, через 10 с, мы бы хотели проксировать все 4 запроса обратно в B в пределах одного TCP-соединения.

Как мы можем повторно использовать тот же TCPсоединение (или команда выборки) для нескольких входящих клиентских запросов?

Мы используем Node 12 и последнюю версию ExpressJS.

1 Ответ

1 голос
/ 09 ноября 2019

Вы можете настроить агент HTTP с keepAlive: true и использовать его для нескольких запросов, чтобы агент мог повторно использовать TCP-соединения для нескольких запросов. Если вам действительно нужно только одно соединение, вы можете использовать опцию maxSockets: 1, но лучше иметь больше соединений, чтобы запретить запрос в полете другим запросам.

Также, agentkeepalive package работаетв качестве хорошей замены HTTP-агента из стандартной библиотеки Node.js и имеет хороший README о том, как его использовать.

...