QUESTION: Що таке WebSocket?
Технологія WebSocket кардинально відрізняється від класичної моделі запит-відповідь протоколу HTTP. Замість того щоб постійно відкривати нове з'єднання для кожної дії, WebSocket встановлює постійне, повнодуплексне з'єднання між клієнтом і сервером поверх одного єдиного TCP-з'єднання.
Для створення такого з'єднання в JavaScript використовується вбудований клас. Ви просто ініціалізуєте його викликом const socket = new WebSocket('ws://example.com/socket'), після чого браузер ініціює процедуру рукостискання для переходу на протокол WebSocket.
Управління життєвим циклом з'єднання будується на подіях. У об'єкта WebSocket є кілька ключових обробників. Подія onopen спрацьовує одразу після успішного встановлення з'єднання. Подія onmessage активується щоразу, коли від сервера надходять нові дані. Подія onerror фіксує помилки з'єднання, а onclose повідомляє про те, що канал було закрито.
Для надсилання текстових або бінарних даних на сервер використовується метод send(), який викликається безпосередньо на об'єкті сокета. Сервер може в будь-який момент часу надіслати повідомлення клієнту без попереднього запиту з його боку.
Головною перевагою WebSockets є миттєва швидкість передачі даних та мінімальний мережевий оверхед, оскільки заголовки повідомлень значно менші за HTTP-заголовки. Ця технологія незамінна при розробці інтерактивних додатків реального часу, таких як чати, онлайн-ігри, фінансові біржові графіки, системи спільного редагування документів та спортивні трансляції.