ToolActToolAct

Инструмент онлайн-тестирования WebSocket

Онлайн тест подключения WebSocket, отправка и получение сообщений инструмент отладки

Отключено
Отправлено
0
Получено
0
Длительность
00:00
Всего сообщений
0
Журнал сообщений

Подключитесь для отправки и получения сообщений

Ctrl + Enter для отправки

Что такое WebSocket?

WebSocket Test подключается к WebSocket URL и помогает проверить, открывается ли real-time канал, можно ли отправлять сообщения и получать ответы. WebSocket используют для чатов, live dashboards, уведомлений, multiplayer-функций, рыночных данных, связи с устройствами и других долгоживущих двусторонних соединений. Инструмент полезен при разработке, troubleshooting, настройке proxy, проверке TLS и сравнении ws:// с wss:// endpoints. Это не нагрузочный тест и не полный анализатор протокола. Аутентификацию, subprotocols, heartbeat, reconnect, формат сообщений, backpressure и лимиты сервера нужно проверять в реальном клиенте и окружении. Успешное соединение доказывает только один путь при текущих условиях. Для реальной диагностики результат нужно сопоставлять с permissions, средой браузера, сетевым путем и состоянием устройства или сервера.

Как пользоваться

Инструкция по использованию

  1. Введите адрес сервера WebSocket в поле URL (ws:// или wss://)
  2. При необходимости укажите субпротоколы через запятую
  3. Нажмите «Подключить» для установки WebSocket-соединения
  4. Введите содержимое сообщения в поле ввода
  5. Выберите тип сообщения (Текст или JSON); для типа JSON формат проверяется автоматически
  6. Нажмите «Отправить» или Ctrl + Enter для отправки сообщения
  7. Просматривайте отправленные и полученные сообщения в списке, нажмите для копирования

Подсказки по подключению

  • Используйте wss:// при тестировании на странице HTTPS; браузеры часто блокируют небезопасные соединения ws:// из защищенных источников.
  • Перед отключением, обновлением или переключением конечных точек во время отладки экспортируйте или скопируйте важные журналы сообщений.

Применение

Ручное подключение к WebSocket-эндпоинтамВведите URL ws:// или wss://, при необходимости укажите подпротоколы через запятую и откройте браузерное WebSocket-соединение. Используется только введённый URL и подпротоколы; браузер устанавливает одно соединение к указанному эндпоинту и ни к чему больше не обращается. Строки состояния разграничивают отключено, подключение, подключено и ошибку с деталями кода закрытия, когда они доступны.
Отправка и проверка текстовых и JSON-сообщенийСоставляйте текстовые или JSON-сообщения, валидируйте JSON перед отправкой в JSON-режиме и отправляйте через Ctrl или Command plus Enter. Отправленные и полученные сообщения снабжены timestamp, размером в байтах, меткой JSON при успешном парсинге и форматированным JSON, когда возможно — поэтому пофреймовое сравнение с ожиданиями сервера выполняется без труда.
Экспорт стенограммы WebSocket-сессииЖурнал сообщений хранит до 500 записей, отслеживает количество отправленных и полученных сообщений, а также длительность соединения, и может быть экспортирован в JSON-файл. Отдельные сообщения также можно скопировать для отладки API-диалогов или потоков событий реального времени, или приложить к тикету вместе с кодом закрытия и длительностью.
Проверка согласования подпротоколовУкажите подпротоколы через запятую (например, 'graphql-ws,soap,wamp') до подключения. Хэндшейк вернёт выбранное сервером значение в заголовке ответа Sec-WebSocket-Protocol — это самый быстрый способ проверить, договорились ли клиент и шлюз, или не удаляет ли прокси запрошенное значение. Если заголовок отсутствует, сервер воспринял запрос как обычный WebSocket, и ваш прикладной парсер, скорее всего, упадёт на первом сообщении, потому что фрейминг на обеих сторонах больше не совпадает.
Наблюдение за heartbeat и таймаутами простояОставьте соединение открытым без трафика и наблюдайте за непрошенными ping-фреймами или автоматическим закрытием. Сравните интервал простоя с документированным интервалом heartbeat сервера, чтобы убедиться, что настройки keepalive совпадают, и зафиксируйте код закрытия, чтобы отличить корректный 1000 от аномальных разрывов вроде 1006. На практике NGINX по умолчанию имеет proxy_read_timeout 60 секунд, а многие облачные балансировщики обрывают простаивающие сокеты через 60–350 секунд — соединение, закрывшееся чуть позже минутной отметки, почти наверняка обрезано прокси, а не сервером. Различение 1006 (аномальный разрыв, нет фрейма закрытия) от 1001 (going away) или 1011 (ошибка сервера) подсказывает, кому эскалировать — владельцу прокси или команде приложения.

Технический принцип

Основа протокола WebSocket — механизм HTTP Upgrade. Клиент сначала отправляет обычный HTTP GET-запрос с заголовками Upgrade: websocket и Connection: Upgrade, а также случайно сгенерированным Sec-WebSocket-Key. После проверки этих заголовков сервер отвечает 101 Switching Protocols, включая значение Sec-WebSocket-Accept, которое получается путём SHA-1 хеширования ключа, конкатенированного с фиксированным GUID, и последующего Base64-кодирования. После ответа 101 TCP-соединение переключается с HTTP на WebSocket, и дальнейшие данные передаются в виде WebSocket-фреймов. Заголовок WebSocket-фрейма занимает минимум 2 байта и содержит флаг FIN, опкод (0x1 — текст, 0x2 — бинарные данные, 0x8 — закрытие, 0x9 — ping, 0xA — pong) и длину полезной нагрузки. Фреймы ping/pong используются для heartbeat-проверки; браузерный API не отправляет их автоматически, поэтому реализация на уровне приложения обязательна. wss:// — это аналог HTTPS+WebSocket: сначала выполняется TLS-рукопожатие, затем обновление до WebSocket; ws:// — незашифрованное соединение, и браузер отклоняет ws://-эндпоинты на HTTPS-страницах для предотвращения атак понижения уровня. Один фрейм по умолчанию ограничен примерно 1 МБ; более длинные сообщения разбиваются на несколько фреймов.

  • Рукопожатие: клиент отправляет HTTP GET с заголовком Upgrade: websocket, а сервер возвращает 101 Switching Protocols, сигнализируя об успешном обновлении
  • Sec-WebSocket-Key — это 16-байтовая Base64-строка, случайно сгенерированная браузером; сервер конкатенирует её с фиксированным GUID, вычисляет SHA-1 и проверяет через Sec-WebSocket-Accept
  • Фреймирование: каждый фрейм содержит заголовок минимум из 2 байтов с FIN, опкодом (текст/бинарные данные/ping/pong/закрытие) и длиной полезной нагрузки
  • ws:// — незашифрованное соединение, wss:// — WebSocket поверх HTTPS; браузеры отклоняют ws:// на HTTPS-сайтах для предотвращения атак понижения уровня
  • Фреймы ping/pong для heartbeat: RFC 6455 требует отправки pong в ответ на каждый ping; браузер не отправляет heartbeat автоматически, это должна реализовать сторона приложения
  • Последовательность закрытия: каждая сторона отправляет фрейм закрытия 0x8 с кодом состояния, собеседник отвечает аналогичным фреймом, и только после этого TCP-соединение фактически освобождается

Примеры

Подключение к публичному echo-сервису

wss://echo.websocket.org — рукопожатие 101 Switching Protocols успешно, отправка "hello" немедленно возвращает "hello"

Отладка собственного WebSocket-сервиса

wss://api.example.com/ws — субпротокол graphql-ws, подключение успешно, сообщения подписки приходят нормально

Воспроизведение разрыва соединения

wss://api.example.com/ws — сервер активно закрывает соединение через 30 секунд после установки, код закрытия 1006 (аномальное закрытие)

Часто задаваемые вопросы

Что делает тестер WebSocket?

Позволяет подключиться к любой точке ws:// или wss://, отправлять и получать сообщения, инспектировать обмен по протоколу. Удобно для тестирования WebSocket-API, MQTT-over-WS брокеров, серверов реал-тайм игр, чат-систем и потоков биржевых котировок при разработке.

Сообщения проходят через ваши серверы?

Нет. Браузер открывает WebSocket-соединение напрямую к целевому хосту. Никаких посредников, никакого логирования с нашей стороны. Целевой хост видит ваш IP так же, как у любого другого клиента.

Почему не получается подключиться к localhost?

Правила mixed-content: если эта страница отдаётся по HTTPS, браузеры блокируют (небезопасные) ws://-соединения. Используйте wss:// или открывайте страницу по обычному HTTP для локального тестирования. Точную причину отказа покажет консоль браузера.

Можно ли отправлять бинарные данные?

Да. Большинство сборок поддерживают и текстовые, и бинарные кадры. Бинарный ввод обычно задаётся в Base64 или hex; страница декодирует его перед отправкой. Бинарные ответы по умолчанию отображаются в hex или Base64.

Как добавить кастомные заголовки?

WebSocket-API браузера не разрешает кастомные заголовки — это ограничение Web-платформы. Единственный заголовок, который можно задать, — Sec-WebSocket-Protocol (субпротокол). Для авторизации через Bearer-токен используйте параметр запроса или авторизацию в первом сообщении; некоторые серверы принимают Cookie.

Тестируются ли сжатие и расширения?

Браузеры автоматически согласуют per-message-deflate с серверами, которые его анонсируют. Страница обычно показывает согласованное расширение. Кастомные расширения не тестируются — браузеры не дают такого уровня контроля.

Почему соединение постоянно обрывается?

Частые причины: idle-таймаут сервера (часто 30–120 с), таймаут прокси/балансировщика, обрыв сети или уход ноутбука в сон. Современные WebSocket нуждаются в ping/pong-сердцебиениях; убедитесь, что сервер шлёт ping, или отправляйте периодические сообщения с клиента.

Связанные инструменты

Инструмент Ping-теста

Бесплатный онлайн-инструмент Ping-тестирования. Проверьте сетевую связность и задержку сервера или домена. Поддержка настройки количества пингов, отображение потери пакетов, средней задержки и детальной статистики.

Инструмент проверки порта

Онлайн-инструмент проверки портов. Проверьте, открыты ли порты на IP-адресе или домене. Пакетная проверка, отображение времени ответа, защита приватности в браузере.

Инструмент поиска IP-адреса

Бесплатный онлайн-инструмент для определения вашего публичного IP-адреса и геолокации: страна, город и провайдер. Узнайте свой IP мгновенно в браузере.

Запрос HTTP-кодов состояния

Бесплатный онлайн-справочник кодов состояния HTTP: все стандартные коды от 1xx до 5xx с описанием. Поиск и фильтр по категориям для быстрого поиска кода.

Проверка SSL-сертификата

Бесплатный онлайн-инструмент проверки SSL-сертификатов. Проверьте действительность SSL/TLS-сертификата, срок действия, цепочку сертификатов, соответствие домена и многое другое.

Передача файлов по LAN

Онлайн-инструмент передачи файлов по локальной сети через WebRTC P2P. Передавайте файлы и текст между устройствами в одной сети. Без сервера, данные локально, безопасно и быстро.