Skip to content

WebSocket-тестер онлайн (клиент ws/wss)

Проверка WebSocket в браузере: настоящие бинарные кадры из HEX/Base64, бинарные сообщения в виде HEX, коды закрытия с причиной и чек-листом; ws:// и wss://. Сообщения идут прямо на ваш сервер, а не на наш.

Работает в браузере Бесплатно
Браузер отправляет сообщения напрямую на указанный сервер — они не проходят через серверы go-tools.
Подставить: (сторонний эхо-сервис: доступность не гарантируется, а Ваши сообщения уходят этой третьей стороне)
Не подключено

Здесь появятся сообщения. Пока Вы не нажмёте «Подключиться», WebSocket-соединение не открывается.

Отправка по таймеру (прикладной heartbeat)
ms

Отправляет обычное текстовое сообщение по таймеру. Это не ping-кадр уровня протокола — веб-страницы не могут ни отправлять, ни видеть ping/pong-кадры. По умолчанию выключено, потому что сервер, который этого не ожидает, может закрыть соединение.

Подключение, текстовые и бинарные сообщения, коды закрытия, сбои рукопожатия, таймаут подключения, рукопожатие Socket.IO, heartbeat, переподключение и поток из 10 000 сообщений проверены сквозными тестами на локальном WebSocket-сервере; описанное на этой странице поведение браузеров измерено в Chromium, Firefox и WebKit в октябре 2026 года. — Инженерная команда Go-Tools · Oct 13, 2026

Собрано и проверено инженерной командой Go Tools.

WebSocket-тестер: быстрые ответы

Может ли эта HTTPS-страница подключиться к ws://localhost?

В Chrome — да, после разрешения доступа к локальной сети Зависит от браузера (по состоянию на октябрь 2026 года). Chrome 147 и новее сначала спрашивает, можно ли странице обращаться к устройствам в локальной сети; после выбора «Разрешить» подключения к ws://localhost и по ws:// к IP-адресу в LAN проходят. Firefox подключается к localhost напрямую, но блокирует адреса в LAN. Safari блокирует ws:// с HTTPS-страниц.

Почему при неудачном подключении видно только 1006?

Браузер скрывает причину Когда рукопожатие не удаётся, браузеры обязаны сообщать странице только событие ошибки и код закрытия 1006 — никогда не HTTP-статус и не причину. Нажмите F12: в консоли Chrome и Edge виден код статуса, который вернул сервер.

Можно ли добавить заголовок Authorization?

Браузер не задаёт заголовки Нет. В браузерном WebSocket API нет способа задать заголовки запроса. Передайте токен в параметре URL, в подпротоколе или в cookie — в зависимости от того, что принимает сервер.

Heartbeat — это ping-кадр?

Это обычное сообщение Нет. Веб-страницы не могут ни отправлять, ни видеть ping/pong-кадры уровня протокола; на ping от сервера браузер отвечает сам. Отправка по таймеру здесь — обычное текстовое сообщение с заданным интервалом, и по умолчанию она выключена.

Почему не удаётся подключиться к серверу Socket.IO?

Выберите протокол Socket.IO Socket.IO — это не чистый WebSocket. В поле «Протокол» выберите Socket.IO: инструмент подключится к /socket.io/?EIO=4&transport=websocket, ответит 40 на пакет open и на каждый ping 2 будет отвечать pong 3 (Socket.IO v3/v4).

Что такое WebSocket-тестер онлайн?

WebSocket-тестер — это клиент, который направляют на WebSocket-сервер, чтобы проверить, принимает ли он подключение и что присылает в ответ. Вы вводите адрес ws:// или wss://, подключаетесь, отправляете текстовые или бинарные сообщения и читаете ответы — это самый быстрый способ проверить эндпоинт бэкенда, обратный прокси или устройство, работающее по WebSocket, не написав ни строки клиентского кода.

Этот тестер работает в браузере: соединение идёт напрямую из браузера на указанный сервер, а сообщения не проходят через серверы go-tools. Это же означает и браузерные ограничения. Нельзя добавить собственные заголовки запроса, нельзя отправить ping-кадры уровня протокола, а при неудачном рукопожатии браузер сообщает странице только код закрытия 1006, без причины.

Что есть сверх голой консоли браузера: бинарные сообщения в виде HEX (или Base64) и отправка из HEX или Base64 настоящими бинарными кадрами, автоматическое форматирование JSON, расшифровка кодов закрытия, чек-лист при неудачном подключении, предупреждение до подключения, если браузер, скорее всего, заблокирует адрес, и журнал, который не тормозит при потоке около 2000 сообщений в секунду (замерено).

09:30:01.204 · Connecting to ws://localhost:8080/ws
09:30:01.219 · Connected · subprotocol: chat
09:30:02.517 → TXT 17 B {"type":"hello"}
09:30:02.531 ← TXT 25 B {"type":"hello","ok":true}
09:30:03.002 → BIN 4 B 48 69 00 FF
09:30:03.010 ← BIN 4 B 48 69 00 FF
09:30:09.880 · Closed · code 4001: application-defined code

Возможности WebSocket-тестера

Localhost и LAN: подсказки для каждого браузера до подключения

Перед подключением инструмент проверяет адрес: обычный ws:// к доменному имени с этой HTTPS-страницы будет заблокирован, поэтому инструмент предупреждает об этом и предлагает wss://. Для localhost и IP-адресов в LAN он сообщает, что Chrome запросит доступ к локальной сети, и чем отличаются Firefox и Safari (по состоянию на октябрь 2026 года).

Бинарные сообщения в HEX, настоящая бинарная отправка

Полученные бинарные сообщения показываются в HEX по 16 байт в строке или в Base64. Введите байты как 48 69 00 FF, 0x48,0x69 или Base64 — и они уйдут бинарным сообщением; недопустимые символы и нечётное число цифр сообщаются с указанием позиции, а предпросмотр байтов показывает ровно то, что будет отправлено.

Коды закрытия и ошибки, с которыми понятно, что делать

Для каждого закрытия видны код, текст причины и то, завершилось ли закрывающее рукопожатие, а также значение стандартных кодов 1000–1015 и пояснение для прикладных кодов 4000–4999. Сбой до открытия соединения выдаёт чек-лист, а не догадку.

Быстрый журнал с поиском и экспортом

Сообщения отрисовываются раз за кадр, поэтому в наших тестах страница не тормозит при потоке около 2000 сообщений в секунду. У каждой записи есть направление, метка времени с миллисекундами, тип и размер в байтах. Фильтруйте по направлению, ищите, ставьте вывод на паузу, храните последние N записей, копируйте или экспортируйте в текст.

Подпротоколы, таймаут, режим Socket.IO

Запросите один или несколько подпротоколов (через запятую) и проверьте, подтвердил ли сервер один из них. Таймаут подключения обрывает рукопожатие, на которое сервер так и не ответил. Режим Socket.IO проходит рукопожатие Engine.IO v4 и отвечает на ping за вас.

Heartbeat и переподключение — только по желанию

Отправка по таймеру повторяет выбранное сообщение с заданным интервалом, а автопереподключение после неожиданного обрыва повторяет попытки с экспоненциальной задержкой (exponential backoff). Обе функции по умолчанию выключены, и инструмент никогда не отправляет ничего без вашей команды.

Примеры проверки WebSocket: localhost, бинарные данные, коды закрытия, Socket.IO

Проверка локального сервера разработки

ws://localhost:8080/ws
Подключено
→ TXT 17 B {"type":"hello"}
← TXT 25 B {"type":"hello","ok":true}

В Chrome 147 и новее браузер сначала спрашивает, разрешить ли доступ к локальной сети; выберите «Разрешить». Firefox подключается к localhost напрямую; Safari блокирует ws:// с этой HTTPS-страницы (по состоянию на октябрь 2026 года).

Отправка бинарного сообщения из HEX

48 69 00 FF
→ BIN 4 B 48 69 00 FF

В режиме HEX инструмент отправляет бинарное сообщение из этих четырёх байтов, а не текст 48 69 00 FF. Base64 SGkA/w== отправляет те же четыре байта.

Разбор закрытия со стороны сервера

Сервер закрывает соединение с кодом 4001, причина «token expired»
Закрыто · код 4001: код, определённый приложением · чистое закрытие
Причина: token expired

Коды 4000–4999 определяет приложение, поэтому значение 4001 ищите в документации сервера. Коды 1000–1015 стандартные, и журнал их расшифровывает.

Подключение к серверу Socket.IO

Протокол: Socket.IO v3/v4, адрес ws://localhost:3000
Подключение к ws://localhost:3000/socket.io/?EIO=4&transport=websocket
← 0{"sid":"…","pingInterval":25000,…}
→ 40
← 40{"sid":"…"}

Режим Socket.IO подставляет путь и параметры запроса Socket.IO, отвечает 40, чтобы войти в пространство имён по умолчанию, и на каждый ping 2 отвечает 3. События отправляйте в виде 42["event","data"].

Как проверить WebSocket онлайн

  1. 1

    Введите адрес сервера

    Введите или вставьте адрес ws:// или wss://; http:// и https:// обрабатываются как ws:// и wss://. Обратите внимание на подсказку под адресом: она предупреждает, если браузер, скорее всего, заблокирует подключение.

  2. 2

    Добавьте подпротоколы, если их требует сервер

    Некоторые серверы требуют подпротокол, например mqtt. Укажите один или несколько через запятую. После подключения журнал покажет, какой из них подтвердил сервер.

  3. 3

    Подключитесь

    Нажмите «Подключиться». Для localhost или адреса в LAN в Chrome выберите «Разрешить», когда браузер спросит о доступе к локальной сети. Если подключиться не удалось, пройдите по появившемуся чек-листу.

  4. 4

    Отправляйте и читайте сообщения

    Выберите «Текст», HEX или Base64, проверьте предпросмотр и нажмите Ctrl+Enter. Полученный JSON форматируется, бинарные данные показываются в HEX; на панели журнала их можно переключить на Base64.

  5. 5

    Отфильтруйте, затем скопируйте или экспортируйте

    Отфильтруйте журнал по направлению или найдите нужное, поставьте вывод на паузу при потоке сообщений, затем скопируйте или экспортируйте журнал в текст с метками времени, направлением и размерами в байтах.

Типичные ошибки при подключении к WebSocket

ws:// к доменному имени с HTTPS-страницы

Браузеры блокируют незашифрованный ws:// к доменному имени со страницы, загруженной по HTTPS (смешанное содержимое, mixed content). Chrome и Firefox сразу отказывают с SecurityError. Используйте wss://; для сервера в LAN в Chrome укажите его IP-адрес (нужно разрешить доступ к локальной сети).

✗ Неверно
ws://api.example.com/ws
✓ Верно
wss://api.example.com/ws

HEX, введённый в текстовом режиме

В текстовом режиме 48 69 отправляется как текстовые символы 4, 8, пробел, 6, 9. Переключитесь на HEX, чтобы отправить байты 0x48 0x69 бинарным сообщением.

✗ Неверно
Текстовый режим: 48 69 → TXT 5 B
✓ Верно
Режим HEX: 48 69 → BIN 2 B

Адрес Socket.IO как обычный WebSocket

Сервер Socket.IO отклоняет обычное WebSocket-подключение к корневому пути, а без ответов на его рукопожатие и ping закрывает соединение. Выберите протокол Socket.IO.

✗ Неверно
ws://localhost:3000
✓ Верно
ws://localhost:3000/socket.io/?EIO=4&transport=websocket

Токен в заголовке запроса

Браузеры не могут отправить заголовок Authorization при WebSocket-рукопожатии. Если сервер это допускает, передайте токен в параметре URL или в подпротоколе.

✗ Неверно
Authorization: Bearer eyJ…
✓ Верно
wss://api.example.com/ws?token=eyJ…

Когда пригодится WebSocket-тестер онлайн

Проверка эндпоинта бэкенда
Убедитесь, что новый WebSocket-маршрут отвечает, посмотрите первые сообщения, которые он присылает, и проверьте, как он обрабатывает некорректный ввод, — ещё до появления фронтенда.
Отладка обратного прокси
За Nginx или шлюзом проверьте, проходит ли upgrade и сколько живёт простаивающее соединение.
IoT и бинарные протоколы
Сообщения устройств и брокеров, которые обмениваются бинарными данными по WebSocket, можно читать в HEX и отправлять им точные байты из HEX или Base64.
Воспроизведение кодов закрытия
Посмотрите, какой код закрытия и какую причину сервер отправляет на самом деле, например при истечении токена или при превышении лимита запросов клиентом.
Отрисовка при большом потоке сообщений
Наблюдайте, как сервер присылает около 2000 сообщений в секунду (замерено), а страница не зависает, — со счётчиками сообщений и байтов.

Как работают WebSocket-соединения в браузере

Открывающее рукопожатие
WebSocket начинается как HTTP-запрос с заголовком Upgrade: websocket. Заголовки запроса браузер формирует сам — Origin, Sec-WebSocket-Key, Sec-WebSocket-Version: 13 и Sec-WebSocket-Protocol из списка подпротоколов, — а страница не может добавить другие. Сервер отвечает 101 Switching Protocols, и с этого момента стороны обмениваются сообщениями.
Текстовые и бинарные сообщения
send() со строкой отправляет текстовое сообщение в кодировке UTF-8; send() с байтами отправляет бинарное сообщение. Страница получает сообщения целиком — никогда не кадры, фрагменты или маски. Этот инструмент устанавливает binaryType в arraybuffer, поэтому бинарные сообщения приходят по порядку и их можно показать в HEX.
Почему в ошибках нет подробностей
Стандарт WebSocket запрещает браузерам сообщать скриптам, почему не удалось подключиться, — сбой DNS, закрытый порт, ошибка сертификата и HTTP 401 выглядят одинаково, — чтобы страница не могла сканировать вашу локальную сеть. Страница видит событие error и код закрытия 1006 (Firefox сообщает об ошибках сертификата кодом 1015).
Смешанное содержимое и доступ к локальной сети
HTTPS-страница не может открыть незашифрованный ws:// к публичному хосту. Начиная с Chrome 147 на WebSocket распространяется и Local Network Access: чтобы публичная страница обратилась к localhost или частному IP-адресу, нужно ваше разрешение. Firefox делает исключение для loopback-адресов, Safari — нет (по состоянию на октябрь 2026 года).
Коды закрытия
Клиент может закрывать соединение только с кодом 1000 или 3000–4999, а причина — не длиннее 123 байт в UTF-8. 1005 (нет кода статуса) и 1006 (аварийное закрытие) никогда не передаются по сети; их сообщает браузер. Код 1015 при сбоях TLS сообщают лишь некоторые браузеры.

Советы по проверке WebSocket

За пределами своего компьютера используйте wss://
Зашифрованный wss:// с доверенным сертификатом позволяет с этой страницы подключаться к публичным серверам в любом браузере и защищает токены в URL; для localhost и адресов в LAN Chrome всё равно сначала запрашивает доступ к локальной сети. Обычный ws:// оставьте для localhost.
При сбое рукопожатия смотрите консоль
Страница видит только 1006. Chrome и Edge выводят в консоль HTTP-статус, который обычно прямо указывает на проблему с аутентификацией, путём или прокси.
Разрешите Origin на сервере
Браузеры всегда отправляют Origin. Если сервер его проверяет, на время тестов разрешите https://go-tools.org; заголовки CORS к WebSocket не применяются.
Пусть ping отправляет сервер
Чтобы простаивающие соединения не обрывались прокси, пусть сервер отправляет ping-кадры; браузер отвечает на них автоматически. Отправку по таймеру используйте, только если ваш протокол ожидает прикладное сообщение.
Не оставляйте токены в общих журналах
Адреса часто содержат токены. Инструмент хранит адрес и сообщения только в памяти, но экспортированные журналы и скриншоты их содержат — перед тем как делиться, удалите секреты.

WebSocket-тестер: частые вопросы

Можно ли проверить ws://localhost или сервер в LAN с этой HTTPS-страницы?
Зависит от браузера (по состоянию на октябрь 2026 года). Chrome 147 и новее считает WebSocket-подключения к вашему компьютеру или локальной сети доступом к локальной сети: в первый раз он спрашивает, разрешить ли это сайту, а после выбора «Разрешить» подключения к ws://localhost, ws://127.0.0.1 и по ws:// к IP-адресу в LAN, например 192.168.1.10, проходят. В Chrome сервер в LAN нужно указывать IP-адресом; обычное имя хоста (кроме .local) блокируется, даже если оно указывает на адрес в вашей сети. Firefox подключается к localhost напрямую, но блокирует ws:// к адресам в LAN. Safari блокирует ws:// к localhost и к LAN с HTTPS-страниц. На wss:// правило смешанного содержимого не распространяется: публичные серверы доступны с этой страницы в любом браузере, если сертификат доверенный; для localhost и адресов в LAN Chrome и здесь сначала запрашивает доступ к локальной сети.
Почему с этой страницы не подключиться к ws://example.com?
Эта страница открыта по HTTPS, а браузеры блокируют незашифрованное подключение ws:// к публичному хосту с HTTPS-страницы (смешанное содержимое, mixed content). Chrome и Firefox сразу отказывают с SecurityError, и инструмент об этом сообщает. Используйте адрес сервера с wss://. На публичные сайты, открытые по обычному http, это правило не распространяется, но в последних версиях Chrome они вообще не могут обращаться к localhost или к вашей локальной сети.
Подключение завершилось с кодом 1006 — что пошло не так?
1006 означает лишь то, что соединение завершилось без закрывающего рукопожатия. Когда рукопожатие не удаётся, стандарт WebSocket требует, чтобы браузер скрыл причину от страницы, — 401, 404, закрытый порт, ошибка сертификата и отклонённый Origin выглядят одинаково (Firefox сообщает об ошибках сертификата кодом 1015), — поэтому ни один веб-тестер, подключающийся прямо из браузера, не может её показать. Нажмите F12 и откройте консоль: Chrome и Edge выводят HTTP-статус, который вернул сервер. Инструмент также отличает сбои до открытия соединения от обрывов после него и для каждого случая перечисляет типичные причины.
Можно ли добавить заголовок Authorization или другой собственный заголовок?
Нет. Браузерный WebSocket API не позволяет веб-страницам задавать заголовки запроса; браузер отправляет фиксированный набор (включая Origin и cookie для собственного сайта сервера). Распространённые обходные пути — в зависимости от того, что поддерживает сервер: токен в URL, например wss://host/ws?token=…; токен в подпротоколе (допустимы только символы токена, поэтому JWT подходит, а стандартный Base64 с = или / — нет, и сервер должен вернуть подпротокол в ответе); или cookie, которую браузеры надёжно отправляют только на собственный сайт страницы, так что с этой страницы до вашего сервера она обычно не доходит. Инструменты вроде Postman могут задавать заголовки, потому что они не браузеры.
Почему в Postman работает, а здесь нет?
Postman и консольные клиенты могут задать любой заголовок и обычно не отправляют Origin. Браузер не может добавить заголовок Authorization и всегда отправляет Origin: https://go-tools.org. Если серверу нужен токен в заголовке или он проверяет Origin, он отклонит рукопожатие браузера; разрешите этот Origin или передайте токен другим способом.
Отправляет ли heartbeat ping-кадры WebSocket?
Нет. Веб-страницы не могут ни отправлять, ни видеть ping/pong-кадры уровня протокола; когда сервер присылает ping, браузер сам отвечает pong. Отправка по таймеру здесь посылает обычное текстовое сообщение, например {"type":"ping"}, с заданным интервалом. По умолчанию она выключена, потому что сервер, не ожидающий такого сообщения, может закрыть соединение. Чтобы простаивающее соединение не обрывалось прокси, пусть ping отправляет сервер.
Почему не удаётся подключиться к моему серверу Socket.IO?
Socket.IO — это протокол поверх WebSocket, а не чистый WebSocket. Сервер Socket.IO v3/v4 ожидает путь /socket.io/?EIO=4&transport=websocket, присылает пакет open, начинающийся с 0, ждёт 40 для входа в пространство имён по умолчанию и закрывает соединение, если на каждый ping 2 не приходит pong 3. Выберите протокол Socket.IO — и инструмент сделает всё это сам; затем отправляйте события в виде 42["event","data"]. Серверы, настроенные только на HTTP long-polling, WebSocket-подключение не примут вовсе.
Соединение обрывается примерно через минуту — почему?
Обычно виноват таймаут простоя в обратном прокси. Nginx по умолчанию закрывает проксируемое соединение, если 60 секунд не передаются данные (proxy_read_timeout), и страница видит код 1006. Увеличьте таймаут или пусть сервер отправляет ping-кадры. За Nginx также проверьте, что прокси пробрасывает upgrade через proxy_set_header Upgrade $http_upgrade; и proxy_set_header Connection "upgrade"; (до Nginx 1.29.7 — ещё и proxy_http_version 1.1;).
Как подключиться к серверу wss:// с самоподписанным сертификатом?
Откройте https://the-same-host:port/ в новой вкладке, примите предупреждение о сертификате, затем вернитесь и подключитесь. Браузер запомнит исключение для этого хоста и порта. Делайте так только для своих тестовых серверов, потому что это ослабляет защиту браузера.
Как отправлять и читать бинарные сообщения?
Выберите HEX или Base64 в качестве формата отправки. HEX принимает 48 69 00 FF, 0x48,0x69 или 486900FF; предпросмотр показывает байты, а недопустимые символы или нечётное число цифр сообщаются с указанием позиции вместо отправки. Полученные бинарные сообщения показываются в HEX по 16 байт в строке, а панель журнала переключает их на Base64. Чтобы прочитать полученный HEX как текст, вставьте его в Hex в текст.
Проходят ли мои сообщения через серверы go-tools?
Нет. Браузер подключается напрямую к указанному адресу, и сообщения не проходят через наши серверы. Кроме того, инструмент не открывает WebSocket-соединение, пока вы не нажмёте «Подключиться», а адрес и сообщения хранит только в памяти — не в URL страницы и не в хранилище браузера. Как и весь сайт, эта страница загружает скрипты аналитики и рекламы.
Есть ли сервер, на котором можно протестировать подключение?
Используйте локальное эхо: оно работает внутри этой страницы, возвращает всё, что вы отправляете, и не устанавливает сетевых соединений. Существуют и публичные эхо-сервисы, например wss://echo.websocket.org/, но они принадлежат третьим сторонам: их доступность не гарантируется, а ваши сообщения уходят этой третьей стороне.

Похожие инструменты

Все инструменты →

Генератор и конструктор curl-команд

Веб и API

Создавайте curl-команды прямо в браузере: метод, заголовки, авторизация, тело — готовая команда мгновенно. Пресеты для Bearer, POST JSON, загрузки файлов. Бесплатно, приватно, без регистрации.

htpasswd Генератор — bcrypt, Apache MD5 (apr1) и Basic Auth

Веб и API

Генерируйте записи htpasswd с bcrypt, Apache MD5 (apr1), SHA-1 и другими алгоритмами. Получайте готовые конфиги для Apache, nginx и Docker. 100% в браузере — без загрузки данных.

Генератор Open Graph и мета-тегов

Веб и API

Создавайте мета-теги Open Graph, Twitter Card и SEO с живым предпросмотром в Google, Facebook и X. 100% бесплатно, в браузере, без регистрации — просто скопируйте код.

Тестер nginx location — почему побеждает этот блок

Веб и API

Смотрите, какой блок location в nginx победит — и почему проиграли все остальные. Бесплатный тестер совпадений для =, ^~, ~ и ~*, целиком в вашем браузере.

Терминал COM-порта онлайн (монитор последовательного порта)

Веб и API

Монитор последовательного порта в Chrome или Edge без установки: CH340, CP2102, ESP32, Arduino; текст или HEX, отправка по таймеру, Modbus CRC-16 добавляется сам. Кракозябры? Инструмент распознает GBK и перерисует уже принятое.

Калькулятор подсетей IPv4

Веб и API

Рассчитайте адрес сети, широковещательный адрес, диапазон узлов, маску подсети и обратную маску для любого блока IPv4 CIDR. Учитывает /31 по RFC 3021, делит блок на подсети, работает в браузере.