Модуль HTTP Node.js: Ответ + Запрос

1

Я только начал смотреть некоторые обучающие программы на узлах, и мне нужна помощь в понимании потоков ответов и запросов, которые я получаю из http.createServer(). Response & Request - это потоки, так это значит, что Node.js отправляет и получает данные в кусках?

Например, если я позвонил

res.write("test1");

res.write("test2");

res.end();

будет ли он писать только эти вещи, когда я буду называть end(), или он будет скрываться в потоке и отправить клиенту, выполняющему запрос, и когда я буду называть write()?

Еще один пример для моего вопроса заключается в том, что если у меня есть txt файл с большим количеством данных открытого текста, тогда я настраиваю поток чтения, который передает данные из этого файла в объект res, будет ли он передавать эти данные в куски или делать это, как только все будет в буфере.

Я думаю, мой вопрос также относится к объекту запроса. Например, тело запроса создало пакет по пакету и потоковому потоку на сервер или все отправлено сразу, а узел просто выбирает, чтобы мы использовали поток для доступа к нему.

Большое спасибо!

Теги:
stream

1 ответ

1

При первом вызове response.write() он отправляет клиенту информацию о буферизованном заголовке и первый кусок тела. Во второй раз вызывается response.write(), Node.js предполагает, что данные будут переданы потоком, и отправляет новые данные отдельно. То есть, реакция буферизуется до первого куска тела.

полный фокус

Итак, в основном, если вы.write() небольшой фрагмент данных, он может быть буферизован до тех пор, пока не будет вызван полный фрагмент или.end(). Если.write() уже имеет размер куска, он будет передан немедленно.

  • 0
    Я вижу, так что давайте уточним, если я дважды отвечаю .write (), то узел будет отправлять второй кусок данных отдельно. Вот почему у нас есть res.end (), поэтому он знает, когда я на самом деле не собираюсь больше отправлять чанки, и может закрыть соединение. Я предполагаю, что мой единственный другой вопрос, кроме того, что это уточнение, также буферизуются ли запросы по умолчанию? Я предполагаю, что это так, и я просто должен слушать с («данные»).
  • 0
    @ user2814533 да
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню