Что такое веб-сокет?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Веб-сокет (WebSocket) — это протокол двусторонней постоянной связи между клиентом и сервером по одному TCP-соединению. В отличие от HTTP, где соединение устанавливается для каждого запроса и затем закрывается, веб-сокеты поддерживают открытое соединение, позволяя обоим участникам отправлять данные в любое время без необходимости повторного открытия.
Основные преимущества:
- Низкая задержка: Данные передаются практически мгновенно.
- Эффективность: Уменьшается накладные расходы на установку соединения.
- Двусторонняя связь: Сервер может отправлять данные клиенту без явного запроса.
Примеры использования:
- Чаты и мессенджеры
- Онлайн-игры
- Торговые платформы в реальном времени
- Мониторинг данных (например, биржевые котировки)
Протокол веб-сокетов начинается с обычного HTTP-запроса, который содержит заголовок Upgrade: websocket. Если сервер поддерживает веб-сокеты, он отвечает с подтверждением обновления протокола, и соединение переключается на протокол веб-сокетов.
Пример установки соединения на стороне клиента (браузер):
// Создание веб-сокет соединения
const ws = new WebSocket('ws://localhost:8080');
// Обработка открытия соединения
ws.onopen = () => {
console.log('WebSocket connection established');
ws.send('Hello server!'); // Отправка сообщения серверу
};
// Обработка получения сообщения от сервера
ws.onmessage = (event) => {
console.log(`Message from server: ${event.data}`);
};
// Обработка ошибки
ws.onerror = (error) => {
console.error('WebSocket error:', error);
};
// Обработка закрытия соединения
ws.onclose = () => {
console.log('WebSocket connection closed');
};
Пример обработки соединения на стороне сервера (Node.js с использованием библиотеки ws):
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
// Обработка нового соединения
wss.on('connection', (ws) => {
console.log('Client connected');
// Обработка получения сообщения от клиента
ws.on('message', (message) => {
console.log(`Received message => ${message}`);
// Отправка ответа клиенту
ws.send(`You sent: ${message}`);
});
// Обработка закрытия соединения
ws.on('close', () => {
console.log('Client disconnected');
});
// Обработка ошибки
ws.on('error', (error) => {
console.error('WebSocket error:', error);
});
ws.send('Welcome to WebSocket server!'); // Отправка приветствия при подключении
});
console.log('WebSocket server started on port 8080');