Node.js http -сервер
Node.js позволяет нам создавать серверы и клиентов с помощью низкоуровневого API модуля HTTP. Когда мы впервые начали изучать узел, мы все столкнулись с следующим кодом:
Кода -копия выглядит следующим образом:
var http = require ('http');
http.createserver (function (req, res) {
res.end ('Hello World/N');
}). Слушайте (3000, "127.0.0.1");
console.log ("Funning Server на http://127.0.0.1:3000");
Этот код включает информацию о модуле HTTP, что означает:
1. Запросите модуль HTTP из ядра `node.js` и назначить переменную для использования в будущих сценариях.
Сценарий может получить доступ к некоторым методам для использования http через `node.js`.
2. Создайте новый объект веб -сервера с помощью `createServer
3. Скрипт передает анонимную функцию на сервер, сообщая объекту веб -сервера, что происходит, когда он получает запрос
4. Строка сценария 4 определяет порт и хост веб -сервера, что означает, что `http: //127.0.0.1: 3000
Посетите сервер
HTTP заголовок
Для каждого HTTP -запроса и ответа отправляется заголовок HTTP. Заголовок HTTP отправляет дополнительную информацию, включая тип контента, дату, когда сервер отправил ответ, и код состояния HTTP
Заголовок HTTP содержит много информации. Ниже приведена информация о заголовке HTTP, включенном в мою домашнюю страницу Baidu:
Поскольку я добавил больше веб -сайтов на свою домашнюю страницу Baidu, данные здесь могут отличаться от данных читателей. Из этого мы видим, что Baidu - это веб -сервер и BWS/1.1
Ниже приведена информация о заголовке HTTP приведенного выше сейчас:
Пере перенаправление в Node.js
В узле мы можем легко создать простой сервер для перенаправления посетителей на другую веб -страницу со следующими рекомендациями:
1. Отправьте клиенту 301 код ответа, сообщив клиенту, что ресурс был перенесен в другое место;
2. Отправьте заголовок местоположения, чтобы сообщить клиенту, где перенаправить.
Соответствующие коды следующие:
Кода -копия выглядит следующим образом:
var http = require ('http');
http.createserver (function (req, res) {
res.writehead (301, {
«Место»: 'http: //example-2.com/web'
});
res.end ();
}). Слушайте (3000, '127.0.0.1');
console.log ("Funning Server на http://127.0.0.1:3000");
Откройте браузер и посетите http://127.0.0.1:3000 будет перенаправлено.
Отвечать на разные запросы
Node.js может не только создать один ответ, но и для нескольких типов запросов, нам нужно добавить некоторые маршруты в приложение. Узел делает это простым с помощью URL -модулей. Модуль URL позволяет нам читать URL, анализировать его, а затем делать что -то с выходом.
Кода -копия выглядит следующим образом:
var url = require ('url');
var requestUrl = "http://example.com:1234/path?query=string#hash"
Теперь мы можем проанализировать запрошенный URL -адрес и, например, вырезать из него контент, чтобы получить имя хоста, мы можем ввести:
Кода -копия выглядит следующим образом:
url.parse (requesturl) .hostname
В настоящее время он вернется на "example.com"
Чтобы получить номер порта, вы можете ввести:
Кода -копия выглядит следующим образом:
url.parse (requesturl) .port
Он вернется в "1234"
Модуль событий
Node.js считается лучшим способом достижения параллелизма. Модуль событий является ядром node.js, и многие другие модули используют его для окружения функциональности архитектуры событий. Поскольку node.js работает в одном потоке, любой синхронный код заблокирован. Поэтому при написании кода node.js мы должны рассмотреть некоторые простые правила:
1. Не блокируйте - `node.js` - однооботочное, и если код блокирует, все остальное останавливается
2. Быстрый возврат - операция должна быть быстро возвращается. Если вы не можете быстро вернуться, вы должны перенести его на другой процесс
Модуль событий позволяет разработчикам настраивать слушателей и процессоров для событий. В клиенте JS мы можем установить слушателя для события Click, а затем что -то сделать, когда происходит событие:
Кода -копия выглядит следующим образом:
var tar = document.getElementbyId ("target");
tar.addeventlistener ("click", function () {
Alert («Нажмите на событие, запускаемое, Target была нажата»);
},ЛОЖЬ);
Конечно, это пример без учета совместимости IE, и события Node.js Focus являются более распространенными для сетевых событий, включая:
1. Ответ с веб -сервера
2. Прочтите данные из файла
3. возвращать данные из базы данных
Используя модуль событий, нам сначала нужно создать новый экземпляр EventEmitter:
Кода -копия выглядит следующим образом:
var EventEmitter = require ('events'). EventEmiter;
var test = new EventEmiter ();
После добавления вышеуказанного контента в код вы можете добавить события и слушателей. Мы можем отправлять события следующим образом, например:
Кода -копия выглядит следующим образом:
test.emit ('msg', 'сообщение отправлено узлом');
Первый параметр - это строка, которая описывает событие, чтобы его можно было использовать для соответствия слушателя
Чтобы получить сообщение, должен быть добавлен слушатель, который обрабатывает его при запуска событий, например:
Кода -копия выглядит следующим образом:
test.on ('message', function (data) {
console.log (data);
});
Основная реализация режима прослушивания событий AddListener/ON, один раз, elemvelistener, RemoveLllisteners, Emit и другие базовые режимы прослушивания событий. Это не то же самое, что события на переднем дереве DOM, потому что у него нет поведения событий, которые принадлежат DOM, таким как пузырьки, слой по захвату слоя, и нет способа справиться с доставкой событий, такими как предотвращение (), Stoppropagation (), StopmedImediatePropagation () и т. Д.
1.class: Events.Eventemitter: Получите класс EventEmitter через require ('Events'). Eventemitter.
2. emitter.on (Event, слушатель): добавьте слушателя в хвост слушателя массива конкретного события. Вернитесь к излучанию, облегчить цепный вызов, то же самое ниже.
3. Emitter.removelistener (событие, слушатель) удаляет слушателя из массива слушателя события
4. Emitter.listeners (Event) возвращает массив слушателей указанного события
Смотрите документацию API Node.js для получения более подробной информации
В следующем коде показан конфиденциальное сообщение, которое может самоуничтожению в течение 5 секунд:
Кода -копия выглядит следующим образом:
var EventEmitter = require ('events'). EventEmiter;
var secretmessage = new EventEmitter ();
secretmessage.on ('message', function (data) {
console.log (data);
});
secretmessage.on ('self destruct', function () {
console.log («MSG уничтожен!»);
});
secretmessage.emit («Сообщение», «Это секретное сообщение. Это будет смерть в 5S»);
settimeout (function () {
secretmessage.emit ('self Defround');
}, 5000);
В этом сценарии отправлены два события с двумя слушателями. Когда сценарий работает, событие сообщения происходит и обрабатывается процессором «Сообщение»
EventEmitter используется повсюду в node.js, поэтому важно освоить его. Node.js получает данные через операции ввода/вывода и широко использует модуль событий для поддержки асинхронного программирования
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ:
В: Есть ли предел максимального количества слушателей для мероприятия?
A: По умолчанию, если на мероприятии работает 10 слушателей, оно выпустит предупреждение. Тем не менее, вы можете использовать eMitter.setMaxListener (n), чтобы изменить это количество
В: Могу ли я послушать все отправленные события?
Ответ: Нет. Нам нужно создать слушателя для каждого события, на которое мы хотим ответить