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.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
Upgrade: websocket + Connection: Upgradeconst ws = new WebSocket('wss://example.com/socket');
ws.onmessage = e => console.log(e.data);
ws.onopen = () => ws.send(JSON.stringify({ type: 'subscribe' }));WebSocket — это протокол, обеспечивающий двустороннюю связь между клиентом и сервером в реальном времени. Он позволяет обмениваться данными без необходимости многократного установления соединений, что значительно снижает задержки и увеличивает скорость передачи данных. WebSocket работает по принципу постоянного соединения, где клиент и сервер могут отправлять сообщения в любой момент, что делает его идеальным для приложений, требующих мгновенной передачи данных, таких как чаты, игры и финансовые приложения.
Протокол WebSocket начинается с этапа установки соединения через HTTP-запрос с использованием специального заголовка Upgrade. После успешного установления соединения, клиент и сервер могут обмениваться данными в формате текстовых или бинарных сообщений. Синтаксис WebSocket включает в себя команды для отправки и получения сообщений, а также для закрытия соединения.
Пример установки WebSocket-соединения:
const socket = new WebSocket('ws://example.com/socket');После этого вы можете обрабатывать события, такие как onopen, onmessage и onclose:
socket.onopen = function(event) { console.log('Соединение установлено!'); };
socket.onmessage = function(event) { console.log('Сообщение от сервера: ', event.data); };
socket.onclose = function(event) { console.log('Соединение закрыто'); };WebSocket поддерживает несколько основных команд:
WebSocket находит широкое применение в таких областях, как онлайн-игры, финансовые платформы и системы обмена сообщениями. Например, в приложении для онлайн-торговли WebSocket может использоваться для получения актуальных котировок и цен на акции в реальном времени. При этом сервер может отправлять обновления клиентам мгновенно, что критически важно для трейдеров.
Рассмотрим пример использования WebSocket для получения обновлений цен на акции:
const socket = new WebSocket('wss://stock.example.com/prices');
socket.onmessage = function(event) {
const stockData = JSON.parse(event.data);
console.log(`Цена акций ${stockData.symbol}: ${stockData.price}`);
};Здесь мы устанавливаем соединение с сервером, который передает данные о ценах акций в формате JSON. Как только сервер отправляет обновление, мы обрабатываем его в функции onmessage и выводим цену в консоль.
Кроме того, WebSocket может использоваться для создания приложений с высокой интерактивностью, таких как онлайн-игры, где требуется обмен данными между игроками и сервером в реальном времени. Это позволяет игрокам взаимодействовать друг с другом практически без задержек, что значительно улучшает игровой процесс.
Важным аспектом использования WebSocket является обеспечение безопасности соединений. Рекомендуется использовать защищенные соединения wss:// для предотвращения перехвата данных. Также стоит учитывать, что WebSocket-соединения могут быть более уязвимыми к атакам, поэтому важно применять дополнительные меры безопасности, такие как аутентификация и авторизация.
WebSocket — bidirectional (сервер и клиент обе шлют). SSE — одноcторонние (только server→client). SSE проще и работает через HTTP, WebSocket быстрее.
Implement reconnect с exponential backoff. Socket.IO делает это автоматически.
Один Node.js handles 10k+ concurrent WebSockets. Для 100k+ — Redis pub/sub между instances или managed service (Ably, Pusher).
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.