Что такое WebSocket?
WebSocket — это протокол, который обеспечивает постоянное, двустороннее соединение между клиентом и сервером. В отличие от HTTP, где клиент должен постоянно запрашивать новые данные, WebSocket позволяет серверу отправлять данные клиенту в любой момент.
Это как иметь постоянную телефонную линию вместо того, чтобы постоянно перезванивать, чтобы спросить "Есть новости?".
HTTP Polling (Периодические запросы)
Клиент вынужден постоянно "дергать" сервер.
WebSocket (Постоянное соединение)
Сервер сам отправляет данные, когда они появляются.
Работа с WebSocket в Postman
Postman позволяет шаг за шагом симулировать весь процесс работы с WebSocket, от установки соединения до его разрыва. Наведите на сообщения в логе, чтобы увидеть пояснения.
Messages
New Message
Жизненный цикл сообщения
В системах реального времени важно отслеживать статус сообщения. Вот как сервер может информировать клиента об этом через WebSocket.
// Клиент отправляет сообщение
{"event": "status_update", "messageId": "msg123", "status": "SENT"}
{"event": "status_update", "messageId": "msg123", "status": "DELIVERED"}
{"event": "status_update", "messageId": "msg123", "status": "SEEN"}
Стратегии тестирования
Тестирование WebSocket отличается от REST и требует внимания к состоянию соединения и асинхронной природе обмена данными.
Тестирование соединения (Handshake)
- Позитивные: Успешное подключение с корректным URL, заголовками и параметрами аутентификации. Проверка ответа сервера `101 Switching Protocols`.
- Негативные: Попытка подключения к неверному URL, без аутентификации, проверка корректной ошибки (например, `401 Unauthorized`).
Тестирование отправки и получения сообщений
- Отправка сообщений в корректном формате (например, валидный JSON).
- Отправка сообщений в некорректном формате (проверка, что сервер не "падает").
- Проверка, что клиент получает сообщения от сервера в правильном формате и порядке, включая системные уведомления (ping/pong).
Тестирование разрыва соединения
- Что происходит, если клиент закрывает соединение? Проверить код закрытия (например, `1000 Normal Closure`).
- Тестирование механизма переподключения (reconnection) после обрыва по таймауту или из-за ошибки сети.
Практический симулятор: Чат
Это симулятор чата на WebSocket. Сначала установите соединение, а затем начните обмениваться сообщениями. Это демонстрирует ключевое отличие от HTTP: постоянное соединение для обмена данными в реальном времени.