Size: a a a

Node.js — русскоговорящее сообщество

2019 November 20

АП

Алексей Попов in Node.js — русскоговорящее сообщество
Nelkor
Всем привет!

Вопрос про нативный http-модуль ноды. Функция-обработчик запроса принимает req и res, которые, вероятно, являются net-сокетами (у них имеются соответствующие методы). Я могу задать обработчик для события data сокета req и таким образом получать чанки тела POST-запроса. Пока что всё логично.

В то же время браузер хочет установить keep-alive-соединение и сервер ему в этом не отказывает, соответствующие заголовки есть как в request-headers, так и в response-headers. Разумеется, я и не против.

При keep-alive-соединении связь не рвётся, то есть можно было бы предположить, что req-сокет остаётся тем же самым. И обработчик запроса повесит на него второй обработчик события data. Этого не происходит. Разумеется, это хорошо, что так не происходит. Но хотелось бы разобраться, как это работает.
не понял, в какой момент ты ожидаешь навешивания второго обработчика на data?
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Алексей Попов
не понял, в какой момент ты ожидаешь навешивания второго обработчика на data?
Да, сорян, я это и не написал 😅
Я предполагал возможность появление такого эффекта при получении второго запроса, то есть запроса по уже существующему keep-alive-соединению
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Nelkor
Да, сорян, я это и не написал 😅
Я предполагал возможность появление такого эффекта при получении второго запроса, то есть запроса по уже существующему keep-alive-соединению
да не, браузер с нодой устанавливает readable stream чисто на получение данных из этого запроса, как данные получены он закрывается
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Alex CherryTea
да не, браузер с нодой устанавливает readable stream чисто на получение данных из этого запроса, как данные получены он закрывается
А что тогда вообще значит keep alive?
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Nelkor
А что тогда вообще значит keep alive?
скорее всего это значит что если ответ не начал моментально читаться он не закроет соединение а даст поудмать на том конце
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Alex CherryTea
скорее всего это значит что если ответ не начал моментально читаться он не закроет соединение а даст поудмать на том конце
Этот заголовок и в ответе есть 😅
источник

N

Nelkor in Node.js — русскоговорящее сообщество
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Nelkor
Этот заголовок и в ответе есть 😅
а погуглить не пробовал?
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Постоянное HTTP-соединение (англ. HTTP persistent connection), также называемые HTTP keep-alive или повторное использование соединений HTTP (англ. HTTP connection reuse) — использование одного TCP-соединения для отправки и получения многократных HTTP-запросов и ответов вместо открытия нового соединения для каждой пары запрос-ответ.
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Вот, википедия говорит, что TCP-соединение не рвётся
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Nelkor
Вот, википедия говорит, что TCP-соединение не рвётся
урок гугления от меня )
источник

АП

Алексей Попов in Node.js — русскоговорящее сообщество
Nelkor
Да, сорян, я это и не написал 😅
Я предполагал возможность появление такого эффекта при получении второго запроса, то есть запроса по уже существующему keep-alive-соединению
так а второй запрос то при таких вводных вообще есть?
или запрос прилетает только один
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Алексей Попов
так а второй запрос то при таких вводных вообще есть?
или запрос прилетает только один
Предположим, запросов много)
источник

N

Nelkor in Node.js — русскоговорящее сообщество
И все по keep-alive-соединению
источник

АП

Алексей Попов in Node.js — русскоговорящее сообщество
Nelkor
Предположим, запросов много)
я имею в виду, попадаешь ли ты в обработчик запроса второй раз
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Alex CherryTea
урок гугления от меня )
Не очень-то понятно
источник

АП

Алексей Попов in Node.js — русскоговорящее сообщество
или у тебя только события data генерятся
источник

N

Nelkor in Node.js — русскоговорящее сообщество
Алексей Попов
я имею в виду, попадаешь ли ты в обработчик запроса второй раз
Конечно. Обработчик запроса выполняется на каждый запрос.
источник

r🧬

rmshell 🧬 in Node.js — русскоговорящее сообщество
Nelkor
Вот, википедия говорит, что TCP-соединение не рвётся
Ну, тут получается с заголовком keep alive так, что когда с ним реквест то соединение не закрывается до того пока не получит респонс
источник

N

Nelkor in Node.js — русскоговорящее сообщество
rmshell 🧬
Ну, тут получается с заголовком keep alive так, что когда с ним реквест то соединение не закрывается до того пока не получит респонс
Любой http-запрос не закроется, пока не получит ответ или не истечёт таймаут. Keep-alive - это именно использование одного TCP-соединения для множеста HTTP-запросов
источник