SebWeo.com
Уявіть собі телефонну розмову. Ви дзвоните другу, він піднімає слухавку, і ви можете говорити одночасно, перебивати один одного, мовчати і знову говорити. З’єднання тримається постійно, доки хтось не покладе слухавку. Це і є аналогія роботи сокетів.
А тепер уявіть рацію. Щоб щось сказати, ви повинні натиснути кнопку, сказати фразу і відпустити кнопку (“Прийом!”). Поки ви не натиснете кнопку знову, ви нічого не можете передати. Це аналогія класичного вебу (HTTP). У цій статті я хочу розповісти вам про технологію, яка перетворила веб з “рації” на “телефон” — про WebSocket.
Щоб зрозуміти революційність сокетів, треба згадати, як працює звичайний інтернет.
У звичайному вебі все ініціює клієнт (ваш браузер). Хочете побачити оновлення в чаті? Браузер має запитати сервер: “Є нові повідомлення?”. Сервер відповідає. Через секунду браузер знову питає: “А зараз є?”. Це називається Long Polling (довге опитування). Це неефективно, створює затримки і навантажує сервер.
Протокол WebSocket (ws:// або wss://) працює інакше. Браузер і сервер один раз “тиснуть руки” (Handshake) і встановлюють постійний тунель (Persistent Connection). Через цей тунель:
| Характеристика | HTTP | WebSocket |
|---|---|---|
| Ініціатор | Тільки клієнт | Клієнт або Сервер |
| Тип зв’язку | Однонаправлений (запит-відповідь) | Двонаправлений (дуплексний) |
| Оверхед (зайві дані) | Великий (заголовки в кожному запиті) | Мінімальний (тільки при встановленні) |
| Затримка (Latency) | Висока | Вкрай низька (Real-time) |
Ви користуєтесь ними щодня, навіть не підозрюючи про це. Ось типові сценарії:
Досить теорії. Давайте напишемо мінімальний код, щоб побачити сокети в дії. Для сервера ми використаємо Node.js (це найпростіший спосіб), а клієнтом буде звичайний HTML-файл.
Переконайтеся, що у вас встановлений Node.js. Створіть папку для проєкту, відкрийте там термінал і виконайте:
npm init -y npm install ws
Ми встановили бібліотеку ws — одну з найпопулярніших для роботи з сокетами в Node.js.
Створіть файл server.js. Цей скрипт буде “слухати” підключення і пересилати повідомлення всім підключеним клієнтам.
const WebSocket = require('ws');
// Створюємо сервер на порту 8080
const wss = new WebSocket.Server({ port: 8080 });
console.log("Сервер сокетів запущено на порту 8080");
wss.on('connection', function connection(ws) {
console.log('Новий клієнт підключився!');
// Коли отримуємо повідомлення від клієнта
ws.on('message', function incoming(message) {
console.log('Отримано: %s', message);
// Розсилаємо це повідомлення ВСІМ підключеним клієнтам
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(message.toString()); // Перетворюємо буфер в рядок
}
});
});
});
Запустіть сервер командою: node server.js
Створіть файл index.html. Тут ми використаємо вбудований у браузер API WebSocket.
<!DOCTYPE html>
<html lang="uk">
<body>
<h2>Мій WebSocket Чат</h2>
<div id="chat" style="border: 1px solid #ccc; height: 200px; overflow-y: scroll; margin-bottom: 10px;"></div>
<input type="text" id="messageInput" placeholder="Введіть повідомлення">
<button >
Тепер відкрийте index.html у двох різних вкладках браузера. Напишіть щось в одній — і воно миттєво з’явиться в іншій! Вітаю, ви створили свій перший Real-time додаток.
Альтернативи: Socket.IO
На практиці чистий WebSocket використовують рідко. Частіше беруть бібліотеку Socket.IO. Чому?
На мою думку, WebSockets — це одна з найцікавіших технологій для вивчення. Вона повністю змінює підхід до проєктування додатків. Замість того, щоб постійно “смикати” сервер, ви створюєте єдиний простір, де події відбуваються миттєво.
Якщо ви хочете рухатися далі у веб-розробці, спробуйте інтегрувати сокети у свій наступний проєкт. Наприклад, зробіть просте сповіщення про нове замовлення на своєму сайті. Це додасть вашому проєкту професійного блиску та інтерактивності.
В 2026 році конкуренція в e-commerce стала жорсткою як ніколи. Клієнти вибирають не тільки за…
Урожай найчастіше втрачають не через аномальні зміни погоди, а через дрібні рішення, які здаються неважливими.…
Музичні інструменти супроводжують людство протягом усієї його історії. Вони з'явилися задовго до писемності і стали…
VR-продакшн сьогодні є окремим напрямком у цифровому виробництві, що поєднує технології віртуальної реальності, 3D-графіку, програмування,…
Ще кілька років тому 3D-друк вважався заняттям для «обраних» – людей, які готові витрачати час…
Наразі практично жодну сферу життя людини не можна уявити без гаджетів. Ці підтримувані штучним інтелектом…