JavaScript. Подробное руководство, 6-е издание
Шрифт:
12.2.1. Пример использования Node: HTTP-сервер
В примере 12.2 приводится реализация простого HTTP-сервера, основанная на особенностях интерпретатора Node. Она обслуживает файлы в текущем каталоге и дополнительно реализует два адреса URL специального назначения, которые обслуживаются особым образом. В этой реализации используется модуль «http», входящий в состав интерпретатора Node, и применяются API доступа к файлам и потокам ввода/вывода, демонстрировавшиеся выше. В примере 18.17, в главе 18, демонстрируется аналогичный специализированный
Пример 12.2. HTTP-сервер, основанный на особенностях Node
// Простой NodeJS HTTP-сервер, обслуживающий файлы в текущем каталоге
// и реализующий два специальных адреса URL для нужд тестирования.
// Подключение к серверу выполняется по адресу http://localhost;8000
// или http://127.0-0.1:8000
// Сначала необходимо загрузить используемые модули
var http = require( http'); // API НТТР-сервера
var fs = require('fs'); // Для работы с локальными файлами
var server = new http.Server; // Создать новый HTTP-сервер
server.listen(8000); // Прослушивать порт 8000.
// Для регистрации обработчиков событий в Node используется метод "оп".
// Когда сервер получает новый запрос, для его обработки вызывается функция,
server.on("request", function (request, response) {
// Выполнить разбор адреса URL
var url = require("url").parse(request.url);
// Специальный адрес URL, который вынуждает сервер выполнить задержку перед ответом.
// Это может быть полезно для имитации работы с медленным сетевым подключением,
if (url.pathname === "/test/delay") {
// Величина задержки определяется из строки запроса
// или устанавливается равной 2000 миллисекунд
var delay = parseInt(url.query) || 2000;
// Установить код состояния и заголовки ответа
response.writeHead(200, {"Content-Type": "text/plain; charset=UTF-8 "});
//
Начать отправку ответа немедленно
response.write("Задержка на " + delay + " миллисекунд...”);
// А затем завершить другой функцией, которая будет вызвана позже.
setTimeout(function {
response.write("roTOBO.");
response.end;
}, delay);
}
// Если запрошен адрес "/test/mirror", отправить запрос обратно целиком.
// Удобно, когда необходимо увидеть тело и заголовки запроса,
else if (url.pathname === "/test/mirror") {
// Код состояния и заголовки ответа
response.writeHead(200,{"Content-Type": "text/plain; charset=UTF-8"});
// Вставить в ответ тело запроса
response.write(request.method + " " + request.url +
" HTTP/" + request.httpVersion + "\r\n");
// И заголовки запроса
for(var h in request.headers) {
response.write(h + ": + request.headers[h] + "\r\n");
}
response.write("\r\n");
// За заголовками следует дополнительная пустая строка
// Завершение отправки ответа выполняется следующими функциями-обработчиками:
// Если в chunk передается тело запроса, вставить его в ответ,
request.on("data", function(chunk) {
response.write(chunk); });
// Когда достигнут конец запроса, ответ также завершается,
request.on("end", function(chunk) { response.end; });
}
// Иначе обслужить файл из локального каталога,
Поделиться:
Популярные книги
Комментарии к «Евгению Онегину» Александра Пушкина
Документальная литература:
критика
5.00
рейтинг книги
Дважды одаренный. Том III
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.50
рейтинг книги
Под-Московье
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
Гримуар темного лорда VIII
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.25
рейтинг книги
Из истории русской, советской и постсоветской цензуры
Научно-образовательная:
история
5.00
рейтинг книги
Точка Бифуркации XI
11. ТБ
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
50 знаменитых городов мира
31. 100 знаменитых
Научно-образовательная:
история
4.75
рейтинг книги
Барон диктует правила
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний реанорец. Том XII – Часть II
12. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Под знаком Песца
1. Под знаком Песца
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Дневники
Проза:
русская классическая проза
6.83
рейтинг книги
Искусство управления складом
Деловая литература:
о бизнесе популярно
5.00
рейтинг книги
Испытания
Проза:
новелла
повесть
5.00
рейтинг книги
Экспансия
8. Цитадели гордыни
Фантастика:
героическая фантастика
боевая фантастика
5.00