Skip to content

Что такое WebSocket

Коротко:

WebSocket (RFC 6455) — протокол поверх TCP, обеспечивающий full-duplex bidirectional коммуникацию между браузером и сервером. В отличие от HTTP, соединение остаётся открытым, сервер может push без запроса. Использование: real-time chat, live notifications, multiplayer games, collaborative editing. Handshake через HTTP Upgrade header → переход на ws:// или wss://.

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • Handshake: HTTP GET с Upgrade: websocket + Connection: Upgrade
  • Protocol: ws:// (plaintext), wss:// (TLS, mandatory в production)
  • Frames: binary или UTF-8 text. Max frame 2^63 bytes (rarely hit)
  • Heartbeat: ping/pong frames для keep-alive
  • Alternative: Server-Sent Events (SSE) для server→client only

Пример

const ws = new WebSocket('wss://example.com/socket');
ws.onmessage = e => console.log(e.data);
ws.onopen = () => ws.send(JSON.stringify({ type: 'subscribe' }));

Смежные термины

Больше по теме

Часто задаваемые вопросы

WebSocket или SSE?

WebSocket — bidirectional (сервер и клиент обе шлют). SSE — одноcторонние (только server→client). SSE проще и работает через HTTP, WebSocket быстрее.

Как обрабатывать disconnect?

Implement reconnect с exponential backoff. Socket.IO делает это автоматически.

Масштабирование?

Один Node.js handles 10k+ concurrent WebSockets. Для 100k+ — Redis pub/sub между instances или managed service (Ably, Pusher).