Что такое Websocket?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое 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: двусторонняя, низкая задержка, оптимально
Тестирование
Что тестировать:
- Handshake и подключение
- Отправка и получение сообщений
- Обработка ошибок и разрывов
- Граничные случаи (большие сообщения, частые отправки)
- Нагрузочное тестирование
Инструменты:
- 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 приложений.