Що таке websocket
WebSocket (Веб-сокет) - це протокол полнодуплексной зв'язку поверх TCP-з'єднання. Тобто за допомогою цього протоколу можна передавати і приймати повідомлення одночасно. Він дозволяє в режимі реального часу обмінюватися повідомленнями між браузером і сервером.
Веб-сокети вже давно не є експериментальними. його використовують в браузерних іграх, інтерактивних системах, платіжних система. Веб-Сокети вже стали частиною сучасного вебу!
Браузер - веб-сервер. Як це працює і що потрібно міняти?
Є досить велика кількість завдань, де нам потрібно отримати асинхронність використовуючи HTTP-протокол. Тобто, якщо на сервер будуть зміна, то потрібно отримати ці зміна в браузері, без перезавантаження. Один з таких прикладів - це чат, де люди спілкуються, і коли один іншому відправляє повідомлення, то повідомлення видна одержувачу моментально, без перезавантаження сторінки. Раніше, створення такого виду додаток було нелегко, знаходилися різні ступені інтерпретації, які імітували push-дії сервера. Один з таких прикладів - це організовані на клієнті фреймів, які перезавантажуються раз в секунду і відправляють запити на сервер.

У цьому підході є багато мінусів - створюється дуже велика кількість запитів на сервер, важко організувати правильну структуру додатків. Я найголовніша проблема - це те, що ми робимо емуляції реакції на серверне подія. Завжди клієнт (браузер) отримує дані з великою затримкою.
А тепер давайте поговоримо про AJAX. Коли об'єкт XMLHTTPRequest з'явилося в браузерах, положення трохи покращився. В даному випадку ми можемо взаємодіяти з сервером за схемою Long Polling. Нижче по пунктам описаний суть даної схеми:
- Клієнт (браузер) відправляє запит на сервер,
- З'єднання не закривається і клієнт очікує настання події,
- Коли події відбувається клієнт отримує відповідь на свій запит,
- Клієнт тут же відправляє новий запит.

За допомогою цього підходу ми отримуємо асинхронні запити до сервера, а відповіді обробляються за допомогою функціями зворотного виклику. Але і цей підхід має деякі недоліки. Головний недолік цього підходу полягати в тому, що тут сервер і серверні події не є ініціатором взаємодії.
Не так давно з'явилося новий протокол, у якого немає таких недоліків, які перед цим ми перерахували. Нова технологія WebSockets є реалізацією протоколу полнодуплексной зв'язку поверх TCP-з'єднання.
Чому WebSockets? Плюси і мінуси протоколу ws
Використовуючи технологію Веб-Сокети нам потрібно забути звичну систему взаємодія в світі WWW. Нам потрібно забити стандартний модель HTTP-протоколу - «запит / відповідь на запит». В рамках технології Веб-Сокетів браузер і сервер в будь-який момент можуть відправляти і приймати дані, то їсть вони стає рівними учасниками.
WebSocket встановлює одне єдине з'єднання клієнта з сервером. Для роботи з WebSockets обидві сторони (клієнт і сервер) повинні підтримувати дану технологію. Всі нові браузери підтримують протокол WS, а серверна частина реалізується розробником. Коли сервер і клієнт готові до «бою», сервер і клієнт можуть відправляти через Веб-Сокети текстові текстові повідомлення. Можна обмінюватися об'єктами відбувається відразу ж, дана технологія створює двонаправлені канали зв'язку.
Так як з'єднання з клієнтом і сервером не закривається (він тримається відкритим постійно), це дозволяє уникнути передачі зайвих даних (HTTP-заголовки). У стандарті WebSockets немає ніяких обмеження за кількістю відкритих з'єднання і по черговості запитів.
У цьому уроці ми дізналися - які способи є для асинхронних запитів на сервер, що таке WebSocket і які переваги він має в порівнянні з AJAX і HTML фреймів. У наступному уроці ми почнемо працювати з WebSocket на Node.js, більш детально будемо розглядати дану технологію в дію і напишемо чат на Веб-Сокетів і Node.js. Повний список уроків Node.js ви знайдете на цьому сторінці.