Ещё один основной модуль — >"http"
. Он даёт функционал для создания HTTP серверов и HTTP-запросов.
Вот всё, что нужно для запуска простейшего HTTP сервера:
>var http = require("http");
>var server = http.createServer(function(request, response) {
> response.writeHead(200, {"Content-Type": "text/html"});
> response.write("Привет!
Вы запросили `"
> request.url + "`
");
> response.end();
>});
>server.listen(8000);
Запустив скрипт на своей машины, вы можете направить браузер по адресу localhost:8000/hello, таким образом создав запрос к серверу. Он ответит небольшой HTML-страницей.
Функция, передаваемая как аргумент к >createServer
, вызывается при каждой попытке соединения с сервером. Переменные >request
и >response
– объекты, представляющие входные и выходные данные. Первый содержит информацию по запросу, например свойство >url
содержит URL запроса.
Чтобы отправить что-то назад, используются методы объекта >response
. Первый, >writeHead
, пишет заголовки ответа (см. главу 17). Вы даёте ему код статуса (в этом случае 200 для “OK”) и объект, содержащий значения заголовков. Здесь мы сообщаем клиенту, что он должен ждать документ HTML.
Затем идёт тело ответа (сам документ), отправляемое через >response.write
. Этот метод можно вызывать несколько раз, если хотите отправлять ответ по кускам, к примеру, передавая потоковые данные по мере их поступления. Наконец, >response.end
сигнализирует конец ответа.
Вызов >server.listen
заставляет сервер слушать запросы на порту 8000. Поэтому вам надо в браузере заходить на localhost:8000, а не просто на localhost (где портом по умолчанию будет 80).
Для остановки такого скрипта Node, который не завершается автоматически, потому что ожидает следующих событий (в данном случае, соединений), надо нажать Ctrl-C.
Настоящий веб-сервер делает гораздо больше того, что описано в примере. Он смотрит на метод запроса (свойство >method
), чтобы понять, какое действие пытается выполнить клиент, и на URL запроса, чтобы понять, на каком ресурсе это действие должно выполняться. Далее вы увидите более продвинутую версию сервера.