Что такое WebSocket?

WebSocket — это протокол двунаправленной связи. Связь обеспечивается по одному TCP-соединению.

Благодаря протоколу WebSocket сервер и клиент могут общаться в режиме реального времени.

Где мы можем использовать WebSockets?

Есть много случаев использования WebSocket

  • Приложения для чата
  • Отслеживание местоположения
  • Разработка игр
  • Совместные приложения
  • Приложения для торговли и криптовалюты

В чем разница между подключением HTTP и WebSocket?

  • HTTP является однонаправленным, а WebSocket — двунаправленным.
  • Когда вы отправляете HTTP-запрос, соединение закрывается после получения ответа, но когда вы подключаетесь через WebSocket и отправляете данные на сервер, соединение все еще будет активным.
  • WebSocket быстрее, чем HTTP.
  • HTTP не имеет состояния и открывает новое соединение для каждого запроса, но WebSocket может обмениваться данными через одно соединение.

Некоторые библиотеки WebSocket

SocketIO: Очень популярная библиотека сокетов => github.com/socketio

WS: github.com/websockets/ws

SockJS:github.com/sockjs/sockjs-client

Перья:github.com/feathersjs/feathers

SocketCluster:github.com/SocketCluster/socketcluster.

Альтернативы WebSocket

Короткий опрос: отправка и получение запросов через определенные промежутки времени (каждые x секунд).

Длинный опрос: отправка и получение запросов через определенные промежутки времени, но сервер будет держать запросы открытыми до истечения времени ожидания. Если сервер что-то найдет, он ответит (тайм-аут 5 секунд, сервер нашел что-то через 2 секунды. Он ответит).

Отправленные сервером события. SSE — это однонаправленный канал связи только от сервера к клиенту. События, отправленные сервером, позволяют получать данные без опроса. Клиент подписывается на «поток» с сервера, и сервер будет отправлять сообщения в «поток событий». В основном используется для push-уведомлений.

БОНУС

Spring Boot & SocketIO & Reactjs — приложение для чата

github.com/gurkanucar/socketio-simple-chat

Разрешение: