WebSocket - очень интересная технология, позволяющая реализовать двусторонний обмен данными между клиентом и браузером в режиме реального времени. Веб-сокеты используют свой отдельный протокол (ws://localhost)
приема и отправки сообщений от TCP-сервера.
Веб-сокеты - относительно новая технология, до появления которой сервер не мог отправлять данные клиенту без предварительного запроса. Браузерам приходилось постоянно отправлять на сервер запрос, чтобы узнать изменилось что-то или нет. Этот процесс называется поллинг (polling) или опрос.
Опрос
Опрос работает следующим образом:
- Клиент запрашивает у сервера страницу.
- Сервер в ответ отправляет запрашиваемый ресурс.
- Клиент, с определенной переодичностью делает AJAX-запросы на сервер.
- Если данные на сервере изменились, то сервер отправляет их клиенту.
Такой метод хорошо работает, но имеет несколько недостатков. Во-первых имеет место большой объём лишнего трафика на сервере. Во-вторых возможны задержки между появлением данных на сервере и передачей их клиенту.
Длинный опрос
Немного более эффективной техникой является длинный опрос (long polling). Механизм работы следующий:
- При отправке AJAX-запроса мы можем указать свойство
timeout
определяет количество миллисекунд, которое запрос будет выполняться, до того, как будет автоматически прерван. - Как только данные на сервере обновятся, сервер передаст их клиенту и браузер отправит новый запрос с таймаутом. Новый запрос браузер отправит также если время ожидания завершится.
Данный способ заметно уменьшает нагрузку на сервер, т.к. запросы отправляются с меньшей переодичностью. Однако возрастает сложность серверной части кода.
Веб-сокеты предоставляют намного более эффективный и простой способ общения клиента и сервера. Соединение устанавливается один раз и остается открытым, до тех пор пока одна из сторон не оборвет соединение.
Веб-сокеты не ограничены рамками браузера. Любой клиент может подключиться к серверу, например мобильные приложения.
https://github.com/codedojo/websocket-intro/archive/master.zip