Простий http сервер
Сьогодні Node.js використовується у багатьох областях, але його початкова мета була надання послуг веб-сервера.
У порівнянні з налаштуванням сервера Apache, NGINX або іншого веб-сервера, налаштування веб-сервера в Node дуже проста. Вбудований модуль http (і його аналог модуль https для захищеного з'єднання) надає метод createServer, який створює простий веб-сервер.
Але варто зазначити, що NGINX це reverse proxy сервер, і він зазвичай використовується разом з Node.js додатком, а не як його альтернатива
Все, що потрібно зробити - це вказати функцію зворотного виклику, яка буде обробляти вхідні запити. Запускається сервер викликом методу listen та вказівкою номер порту, на якому сервер чекатиме запити до себе:
const http = require('docs/additional_materials/simple-web-server/http');
const port = 3000;
const server = http.createServer((req, res) => {
res.end('Hello world!');
});
server.listen(port, () => {
console.log(`Сервер чекає на з'єднання на порті: ${port}`);
});
З міркувань безпеки та налагодження зазвичай використовуються порти вище 1024 і
вибирають такі номери, як 3000, 8000, 3030 та 8080, оскільки їх легше запам'ятати
Якщо ви збережете цей код у файл server.js
і запустите скрипт у консолі
node server.js
то вбивши в адресному рядку браузера адресу http://localhost:3000/, ви побачите рядок 'Hello world!' .Зупинити виконання скрипту можна комбінацією Ctrl+C у терміналі
Як бачимо в основі веб-сервера Node, лежить функція зворотного виклику і саме вона
обробляє всі запити. Їй передається два аргументи: об'єкт
IncomingMessage
- змінна req
та об'єкт ServerResponse
- змінна
res
. Об'єкт IncomingMessage
містить всю інформацію про НТТР-запит: який
URL затребуваний, всі надіслані заголовки, всі надіслані в тілі дані і т.д.
Об'єкт ServerResponse
містить властивості та методи для управління відповіддю,
який надсилається назад клієнту (зазвичай браузеру). Об'єкт ServerResponse
реалізує інтерфейс потоку запису, що визначає те, як саме дані
пересилаються клієнту.