Публикации - Создание http- и tcp-серверов в Node.js

HTTP-сервер

Большинство стандартных web-приложений запускаются через http-протокол (HyperText Transfer Protocol – протокол передачи гипертекста).

Можно сказать, что HTTP-протокол является частным случаем протокола TCP. Так и в ядре Node.js мудуль для создания протокола HTTP (который так и называется http), наследует функциональность модуля Net (модуль протокола TCP).

Модуль HTTP представляет базовую HTTP-функциональность, обеспечивающую приложению сетевой доступ к запросам и ответам. Рассмотрим пример создания HTTP-сервера:

var http = require(‘http’);

http.createServer(function(req, res){

 res.writeHead(200, {‘content-type’: ‘text/plain’});

 res.end(‘Hello world!’);

}).listen(8128);
console.log(‘Server running on 8128’);

Набираем в браузере http://127.0.0.1:8128 и увидим на экране Hello world!

Следует обратить внимание на важную деталь: если мы запустим еще один процесс, то консоль выдаст ошибку. Система не может слушать один и тот же пор дважды.

Для того чтобы еще раз запустить прослушивание того же порта, необходимо закрыть предыдущее прослушивание.

С помощью функции createServer и безымянной функции обратного вызова создается новый сервер. Входящие параметры функции обратного вызова: req (серверный запрос или поток чтения – это объект http.serverRequest) и res (серверный ответ или поток записи – это объект http.serverResponse).

У объекта http.serverResponse имеются следующие методы:

  • res.writeHead(), который отправляет заголовок ответа с кодом статуса ответа.
  • res.end(), который подает сигнал о завершении переадчи данных и тело ответа для вывода на экран.
  • res.write(), который выводит данные на экран без сигнала о завершении переадчи данных.

Метод http.Server.listen прослушивает входящие подключения к заданному порту. Метод listen является асинхронным, т.е. не блокирует выполнение программы в ожидании подключения. Поэтому, функция console.log() листинга может выполниться раньше подключения.

Кроме потока чтения и записи, HTTP поддерживает кодировку фрагментированной передачи. Этот тип кодировки применяется для обработки больших объемов данных. При этом запись данных может начаться еще до получения оставшейся части запрошенных данных.

Модули Net и HTTP могут также подключаться к UNIX-сокету, а не к конкретному сетевому порту, что позволяет поддерживать взаимодействие между процессами в пределах одной и той же системы.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться