← Назад к вопросам

Что такое Websocket?

2.0 Middle🔥 131 комментариев
#Веб-тестирование#Клиент-серверная архитектура

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое WebSocket?

WebSocket — протокол для двусторонней связи между клиентом и сервером через одно TCP-соединение.

Отличия от HTTP

  • Направление: HTTP однонаправленно, WebSocket двусторонне
  • Модель: HTTP Request-Response, WebSocket постоянное соединение
  • Latency: HTTP высокая, WebSocket низкая
  • Bandwidth: HTTP много overhead, WebSocket минимален
  • Применение: HTTP для веб-страниц, WebSocket для чатов, игр, уведомлений

Как работает

Handshake: Клиент отправляет HTTP upgrade запрос, сервер отвечает 101 Switching Protocols.

Коммуникация: Оба участника могут отправлять сообщения в любой момент.

Закрытие: Одна из сторон отправляет закрывающий фрейм.

Структура сообщения

Сообщение передаётся в виде фреймов с типом (OPCODE):

  • 0x1 Text frame
  • 0x2 Binary frame
  • 0x8 Close frame
  • 0x9 Ping
  • 0xA Pong

Примеры использования

  • Чат: реал-тайм обмен сообщениями
  • Котировки: постоянные обновления цен
  • Игры: синхронизация действий игроков

Сравнение с альтернативами

HTTP Polling: клиент опрашивает каждые N секунд (неэффективно)

Server-Sent Events: только сервер может отправлять

WebSocket: двусторонняя, низкая задержка, оптимально

Тестирование

Что тестировать:

  1. Handshake и подключение
  2. Отправка и получение сообщений
  3. Обработка ошибок и разрывов
  4. Граничные случаи (большие сообщения, частые отправки)
  5. Нагрузочное тестирование

Инструменты:

  • Browser DevTools Network для WS трафика
  • wscat для командной строки
  • Python websocket для автотестов
  • JMeter/Gatling для нагрузки

Проблемы и решения

  • Firewall блокирует: используй WSS на порту 443
  • Потеря соединения: добавь ping-pong heartbeat
  • Утечка памяти: используй efficient queues
  • Неправильный порядок: нумеруй сообщения

Преимущества

  • Низкая задержка
  • Двусторонняя в одном соединении
  • Экономия трафика
  • Идеален для real-time

Недостатки

  • Сложнее в реализации
  • Требует специальной инфраструктуры
  • Сложнее масштабировать
  • Нужна логика восстановления

Применение

  • Чаты (Slack, Discord)
  • Финансовые котировки
  • Multiplayer игры
  • Collaborative tools (Google Docs)
  • IoT и мониторинг
  • Live streaming

Совет QA

Если видишь real-time функционал — тестируй установку соединения, доставку сообщений, разрывы, нагрузку. Используй DevTools и wscat. Понимание WebSocket критично для modern real-time приложений.

Что такое Websocket? | PrepBro