Что такое WebSocket?

Обычное общение в интернете работает через HTTP. Клиент отправляет запрос, сервер отвечает — и соединение закрывается.
Но что если нужны мгновенные обновления — чат, онлайн-игра, котировки акций?
Постоянно открывать новые HTTP-запросы было бы медленно и неэффективно.

Именно для этого придумали WebSocket.


Основная идея

  • WebSocket создаёт постоянное двустороннее соединение между клиентом и сервером.
  • В отличие от “запрос-ответ”, сообщения могут отправляться в обе стороны в любое время.
  • Начинается как HTTP-запрос, затем соединение “апгрейдится” до WebSocket.

Зачем нужен WebSocket?

  • Обмен в реальном времени (чаты, уведомления, онлайн-игры).
  • Эффективность — не нужно открывать соединения заново.
  • Двусторонняя связь — клиент и сервер равноправны.

Пример на JavaScript

// WebSocket на клиенте
const socket = new WebSocket("ws://localhost:8080");

socket.onopen = () => {
  console.log("Соединение установлено");
  socket.send("Привет сервер!");
};

socket.onmessage = (event) => {
  console.log("Сообщение от сервера:", event.data);
};

Сервер (Node.js + ws):

const WebSocket = require("ws");
const server = new WebSocket.Server({ port: 8080 });

server.on("connection", (socket) => {
  console.log("Клиент подключен");
  socket.on("message", (msg) => {
    console.log("Получено:", msg);
    socket.send("Эхо: " + msg);
  });
});

Итог

  • WebSocket = всегда открытое, двустороннее соединение.
  • Отлично подходит для приложений в реальном времени.
  • Стартует как HTTP и апгрейдится в WebSocket.
  • Проще и быстрее, чем опрос сервера каждые несколько секунд.