WebSocket

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

Особенности WebSocket

  • Постоянное соединение — нет необходимости устанавливать соединение для каждого сообщения
  • Низкая задержка — минимальные накладные расходы
  • Двусторонняя связь — сервер может инициировать отправку данных
  • Полнодуплексная связь — одновременная передача в обе стороны

WebSocket vs HTTP

  • HTTP — запрос-ответ модель, без состояния
  • WebSocket — постоянное соединение с состоянием
  • Накладные расходы — WebSocket имеет меньше накладных расходов
  • Real-time — WebSocket лучше для real-time приложений

Пример клиента WebSocket

 1// Создание соединения
 2const socket = new WebSocket('wss://example.com/websocket');
 3
 4// Обработка открытия соединения
 5socket.addEventListener('open', function (event) {
 6    console.log('Соединение установлено');
 7    socket.send('Привет, сервер!');
 8});
 9
10// Обработка сообщений
11socket.addEventListener('message', function (event) {
12    console.log('Сообщение от сервера:', event.data);
13});
14
15// Обработка закрытия соединения
16socket.addEventListener('close', function (event) {
17    console.log('Соединение закрыто');
18});
19
20// Обработка ошибок
21socket.addEventListener('error', function (event) {
22    console.log('Ошибка WebSocket:', event);
23});

Применения WebSocket

  • Чаты — мгновенные сообщения
  • Онлайн игры — синхронизация состояния
  • Live обновления — новости, биржевые котировки
  • Коллаборативные инструменты — Google Docs
  • IoT приложения — данные с датчиков

WebSocket библиотеки

  • Socket.IO — полнофункциональная библиотека
  • ws — простая WebSocket библиотека для Node.js
  • sockjs — WebSocket-подобный объект с fallback
  • uWebSockets — высокопроизводительная реализация

FAQ

Когда использовать WebSocket вместо HTTP?

Используйте WebSocket когда нужна двусторонняя связь в реальном времени, частый обмен данными или push-уведомления от сервера.