Что такое 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.
- Проще и быстрее, чем опрос сервера каждые несколько секунд.