2014-01-10 2 views
1

Я реализую свой собственный модуль http. Как я читаю чиновник Node.js модуля HTTP API, я не мог понять несколько вещей:node.js response.writeHead on http module

  1. Если пользователь использует функцию response.writeHead(statusCode, [reasonPhrase], [headers]), являются заголовки должны быть написаны immidiatly к розетке или они сначала должны быть сохранены как член объекта? а затем записывается только после функции .end()?
  2. В чем смысл неявных заголовков, которые должны использоваться всякий раз, когда пользователь не использовал writeHead()? должны ли они быть впереди? и если пользователь не установил их? каково должно быть поведение? спасибо
+0

Так что на самом деле я нашел ответ на первый вопрос, поэтому оставил только второй –

ответ

2

Ответы:

  1. Все, что вы пишете в ответ либо заголовки с writeHead или телом с write в буфере и отправлены. Вы видите, что они используют буферы сокетов. Они могут хранить фиксированный объем данных перед отправкой. Важно помнить, что вы можете устанавливать заголовки только перед тем, как начать писать тело. Если вы это сделаете, некоторые заголовки установят для вас сам http-сервер.

  2. Неявные заголовки - это те, которые вы не пишете специально, но все еще отправлены. Настройте простой HTTP-сервер, отвечая на запрос без установки какого-либо заголовка. Затем просмотрите заголовки запросов, открывающие сайт в браузере. Будут такие заголовки, как Date, Server, Host и т. Д., Которые автоматически добавляются к каждому запросу без желания пользователя.

0

Я нашел ответ для первого вопроса, но все еще не понимаю второго.

The first time response.write() is called, it will send the buffered header information and the first body to the client. The second time response.write() is called, Node assumes you're going to be streaming data, and sends that separately. That is, the response is buffered up to the first chunk of body. 
Смежные вопросы