Skip to content

Testador de WebSocket Online (Cliente ws/wss)

Binário exibido em HEX e frames binários reais enviados de HEX/Base64; códigos de fechamento com motivo e um checklist. Teste ws:// ou wss:// no navegador. As mensagens vão direto para o seu servidor, não para o nosso.

Roda no navegador Grátis
Seu navegador envia as mensagens direto para o servidor que você informa — elas não passam pelos servidores da go-tools.
Preencher: (serviço de eco de terceiros: disponibilidade não garantida, e as suas mensagens vão para esse terceiro)
Desconectado

As mensagens aparecem aqui. Nenhuma conexão WebSocket é aberta até você clicar em Conectar.

Envio periódico (heartbeat de aplicação)
ms

Isto envia uma mensagem de texto comum com um timer. Não é um frame de ping no nível do protocolo — páginas web não podem enviar nem ver frames de ping/pong. Desligado por padrão, porque um servidor que não espera essa mensagem pode fechar a conexão.

Conexão, mensagens de texto e binárias, códigos de fechamento, falhas de handshake, timeout de conexão, o handshake do Socket.IO, heartbeat, reconexão e uma enxurrada de 10.000 mensagens são testados de ponta a ponta contra um servidor WebSocket local; o comportamento dos navegadores descrito nesta página foi medido no Chromium, no Firefox e no WebKit em outubro de 2026. — Equipe Go Tools · Oct 13, 2026

Desenvolvido e verificado pela equipe de engenharia da Go Tools.

Respostas rápidas sobre o testador de WebSocket

Esta página HTTPS consegue se conectar a ws://localhost?

Sim no Chrome, depois que você permite o acesso à rede local Depende do navegador (em outubro de 2026). O Chrome 147 ou mais recente primeiro pergunta se a página pode acessar dispositivos da sua rede local; depois que você escolhe Permitir, as conexões com ws://localhost e com ws:// para um endereço IP da LAN funcionam. O Firefox conecta ao localhost diretamente, mas bloqueia endereços da LAN. O Safari bloqueia ws:// a partir de páginas HTTPS.

Por que uma conexão que falhou só mostra 1006?

O navegador esconde o motivo Quando o handshake falha, os navegadores são obrigados a passar para a página apenas um erro e o código de fechamento 1006 — nunca o status HTTP nem o motivo. Pressione F12: o console do Chrome e do Edge mostra o código de status que o servidor retornou.

Posso adicionar um cabeçalho Authorization?

Navegadores não definem cabeçalhos Não. A API WebSocket do navegador não tem como definir cabeçalhos da requisição. Coloque o token em um parâmetro da URL, em um subprotocolo ou em um cookie — o que o seu servidor aceitar.

O heartbeat é um frame de ping?

É uma mensagem comum Não. Páginas web não podem enviar nem ver frames de ping/pong do protocolo; o navegador responde sozinho aos pings do servidor. O envio periódico desta ferramenta é uma mensagem de texto comum enviada em intervalos, e vem desligado por padrão.

Por que não consigo conectar a um servidor Socket.IO?

Use o preset Socket.IO Socket.IO não é WebSocket puro. Escolha o preset Socket.IO: ele conecta em /socket.io/?EIO=4&transport=websocket, responde 40 ao pacote de abertura e responde cada ping 2 com um pong 3 (Socket.IO v3/v4).

O que é um testador de WebSocket online?

Um testador de WebSocket é um cliente que você aponta para um servidor WebSocket para ver se ele aceita a conexão e o que ele devolve. Você digita um endereço ws:// ou wss://, conecta, envia mensagens de texto ou binárias e lê as respostas — o jeito mais rápido de verificar um endpoint de backend, um proxy reverso ou um dispositivo que fala WebSocket sem escrever código cliente.

Este testador roda no seu navegador: a conexão vai direto do seu navegador para o servidor que você informa, e as mensagens não passam pelos servidores da go-tools. Isso também significa que ele tem os limites do navegador. Ele não consegue adicionar cabeçalhos de requisição personalizados, não consegue enviar frames de ping no nível do protocolo e, quando um handshake falha, o navegador informa à página apenas o código de fechamento 1006, não o porquê.

O que ele acrescenta em relação a um simples console do navegador: mensagens binárias exibidas em HEX (ou Base64) e enviadas a partir de HEX ou Base64 como frames binários reais, JSON formatado automaticamente, códigos de fechamento explicados, um checklist quando uma conexão falha, um aviso antes de conectar quando o navegador provavelmente vai bloquear o endereço e um log que continua responsivo com cerca de 2.000 mensagens por segundo (medido).

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

Recursos do testador de WebSocket

Localhost e LAN: orientações por navegador antes de conectar

Antes de conectar, a ferramenta verifica o endereço: um ws:// sem criptografia para um nome de domínio a partir desta página HTTPS será bloqueado, então ela avisa e sugere wss://. Para localhost e endereços IP da LAN, ela informa que o Chrome vai pedir acesso à rede local e como o Firefox e o Safari se comportam de forma diferente (em outubro de 2026).

Mensagens binárias em HEX, envios binários de verdade

As mensagens binárias recebidas são exibidas em HEX, 16 bytes por linha, ou em Base64. Digite os bytes como 48 69 00 FF, 0x48,0x69 ou Base64 e eles saem como mensagem binária; caracteres inválidos e quantidades ímpares de dígitos são apontados com a posição, e a prévia dos bytes mostra exatamente o que será enviado.

Códigos de fechamento e falhas com o que fazer a seguir

Todo fechamento mostra o código, o texto do motivo e se o handshake de fechamento foi concluído, com o significado dos códigos padrão 1000–1015 e uma nota para os códigos de aplicação 4000–4999. Uma falha antes de a conexão abrir gera um checklist em vez de um palpite.

Log rápido com busca e exportação

As mensagens são desenhadas uma vez por quadro de renderização, então a página continua responsiva com cerca de 2.000 mensagens por segundo nos nossos testes. Cada entrada tem direção, timestamp em milissegundos, tipo e tamanho em bytes. Filtre por direção, pesquise, pause a visualização, mantenha as últimas N entradas, copie ou exporte como texto.

Subprotocolos, timeout, preset Socket.IO

Solicite um ou mais subprotocolos (separados por vírgula) e veja se o servidor confirmou algum. Um timeout de conexão encerra handshakes que o servidor nunca responde. O preset Socket.IO conclui o handshake do Engine.IO v4 e responde aos pings por você.

Heartbeat e reconexão opcionais

O envio periódico repete uma mensagem à sua escolha em intervalos, e a reconexão automática tenta de novo com backoff exponencial após uma queda inesperada. Os dois vêm desligados por padrão, e a ferramenta nunca envia nada que você não tenha pedido.

Exemplos de teste de WebSocket: localhost, binário, códigos de fechamento, Socket.IO

Testar um servidor de desenvolvimento local

ws://localhost:8080/ws
Conectado
→ TXT 17 B {"type":"hello"}
← TXT 25 B {"type":"hello","ok":true}

No Chrome 147 ou mais recente, o navegador primeiro pergunta se deve permitir o acesso à sua rede local; escolha Permitir. O Firefox conecta ao localhost diretamente; o Safari bloqueia ws:// a partir desta página HTTPS (em outubro de 2026).

Enviar uma mensagem binária a partir de HEX

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

No modo HEX, a ferramenta envia uma mensagem binária com estes quatro bytes, não o texto 48 69 00 FF. Em Base64, SGkA/w== envia os mesmos quatro bytes.

Ler um fechamento feito pelo servidor

O servidor fecha com o código 4001, motivo “token expired”
Fechado · código 4001: código definido pela aplicação · fechamento limpo
Motivo: token expired

Os códigos 4000–4999 são definidos pela aplicação, então procure o 4001 na documentação do servidor. Os códigos 1000–1015 são padrão e são explicados no log.

Conectar a um servidor Socket.IO

Protocolo: Socket.IO v3/v4, endereço ws://localhost:3000
Conectando a ws://localhost:3000/socket.io/?EIO=4&transport=websocket
← 0{"sid":"…","pingInterval":25000,…}
→ 40
← 40{"sid":"…"}

O preset preenche o caminho e a query do Socket.IO, responde 40 para entrar no namespace padrão e responde cada ping 2 com 3. Envie eventos como 42["event","data"].

Como testar um WebSocket online

  1. 1

    Informe o endereço do servidor

    Digite ou cole um endereço ws:// ou wss://; http:// e https:// são tratados como ws:// e wss://. Confira a nota abaixo do endereço: ela avisa quando o navegador provavelmente vai bloqueá-lo.

  2. 2

    Adicione subprotocolos se o servidor precisar

    Alguns servidores exigem um subprotocolo, por exemplo mqtt. Informe um ou mais, separados por vírgula. Depois de conectar, o log mostra qual deles o servidor confirmou.

  3. 3

    Conecte

    Clique em Conectar. Para localhost ou um endereço da LAN no Chrome, escolha Permitir quando ele perguntar sobre o acesso à rede local. Se a conexão falhar, siga o checklist que aparece.

  4. 4

    Envie e leia mensagens

    Escolha Texto, HEX ou Base64, confira a prévia e pressione Ctrl+Enter. O JSON recebido é formatado e o binário é exibido em HEX; mude o binário para Base64 na barra de ferramentas do log.

  5. 5

    Filtre e depois copie ou exporte

    Filtre por direção ou pesquise no log, pause a visualização durante uma enxurrada de mensagens e depois copie ou exporte o log como texto, com timestamps, direção e tamanhos em bytes.

Erros comuns de conexão WebSocket

ws:// para um nome de domínio a partir de uma página HTTPS

Os navegadores bloqueiam um ws:// sem criptografia para um nome de domínio a partir de uma página carregada via HTTPS (conteúdo misto). Chrome e Firefox recusam na hora com um SecurityError. Use wss://; para um servidor da LAN no Chrome, escreva o endereço IP dele (o acesso à rede local precisa ser permitido).

✗ Incorreto
ws://api.example.com/ws
✓ Correto
wss://api.example.com/ws

HEX digitado no modo texto

No modo texto, 48 69 é enviado como os caracteres 4, 8, espaço, 6, 9. Mude para HEX para enviar os bytes 0x48 0x69 como mensagem binária.

✗ Incorreto
Modo texto: 48 69 → TXT 5 B
✓ Correto
Modo HEX: 48 69 → BIN 2 B

URL do Socket.IO usada como WebSocket puro

Um servidor Socket.IO rejeita um WebSocket puro no caminho raiz e, sem respostas ao handshake e aos pings dele, fecha a conexão. Use o preset Socket.IO.

✗ Incorreto
ws://localhost:3000
✓ Correto
ws://localhost:3000/socket.io/?EIO=4&transport=websocket

Token em um cabeçalho da requisição

Os navegadores não conseguem enviar um cabeçalho Authorization com o handshake do WebSocket. Se o seu servidor permitir, passe o token como parâmetro da URL ou como subprotocolo.

✗ Incorreto
Authorization: Bearer eyJ…
✓ Correto
wss://api.example.com/ws?token=eyJ…

Quando um testador de WebSocket online ajuda

Verificar um endpoint de backend
Confirme que uma nova rota WebSocket responde, inspecione as primeiras mensagens que ela envia e teste como ela lida com entradas malformadas — antes de o frontend existir.
Depurar um proxy reverso
Atrás do Nginx ou de um gateway, veja se o upgrade passa e quanto tempo uma conexão ociosa sobrevive.
IoT e protocolos binários
Dispositivos e brokers que falam binário sobre WebSocket podem ser lidos em HEX e receber bytes exatos enviados a partir de HEX ou Base64.
Reproduzir códigos de fechamento
Veja o código de fechamento e o motivo que o servidor realmente envia, por exemplo quando um token expira ou um cliente atinge o limite de requisições.
Exibição com alto volume de mensagens
Acompanhe um servidor enviando cerca de 2.000 mensagens por segundo (medido) sem travar a página, com contadores de mensagens e bytes.

Como funcionam as conexões WebSocket no navegador

O handshake de abertura
Um WebSocket começa como uma requisição HTTP com Upgrade: websocket. O navegador monta os cabeçalhos da requisição sozinho — Origin, Sec-WebSocket-Key, Sec-WebSocket-Version: 13 e Sec-WebSocket-Protocol a partir da lista de subprotocolos — e a página não pode adicionar outros. O servidor responde 101 Switching Protocols e, a partir daí, os dois lados trocam mensagens.
Mensagens de texto e binárias
send() com uma string envia uma mensagem de texto codificada em UTF-8; send() com bytes envia uma mensagem binária. As páginas recebem mensagens inteiras, nunca frames, fragmentos ou máscaras. Esta ferramenta define binaryType como arraybuffer para que as mensagens binárias cheguem em ordem e possam ser exibidas em HEX.
Por que os erros não trazem detalhes
O padrão WebSocket proíbe os navegadores de dizer aos scripts por que uma conexão falhou — falha de DNS, porta recusada, erro de certificado ou HTTP 401 parecem iguais — para que uma página não consiga sondar sua rede local. As páginas veem um evento error e o código de fechamento 1006 (o Firefox informa erros de certificado como 1015).
Conteúdo misto e acesso à rede local
Uma página HTTPS não pode abrir um ws:// sem criptografia para um host público. Desde o Chrome 147, o WebSocket também está sujeito ao acesso à rede local (Local Network Access): alcançar localhost ou um IP privado a partir de uma página pública exige sua permissão. O Firefox isenta endereços de loopback; o Safari não (em outubro de 2026).
Códigos de fechamento
Um cliente só pode fechar com 1000 ou 3000–4999, e o motivo pode ter no máximo 123 bytes em UTF-8. 1005 (sem código de status) e 1006 (fechamento anormal) nunca trafegam na rede; é o navegador que os informa. 1015 é informado em falhas de TLS apenas por alguns navegadores.

Dicas para testar WebSocket

Use wss:// fora da sua máquina
O wss:// criptografado com um certificado confiável alcança servidores públicos a partir desta página em todos os navegadores e protege tokens que vão na URL; para o localhost ou endereços da LAN, o Chrome ainda pede primeiro a permissão de rede local. Deixe o ws:// sem criptografia para o localhost.
Confira o console quando o handshake falhar
A página só vê 1006. O Chrome e o Edge mostram o status HTTP no console, o que geralmente aponta direto para problemas de autenticação, de caminho ou de proxy.
Libere o Origin no servidor
Os navegadores sempre enviam Origin. Se o seu servidor verifica esse cabeçalho, libere https://go-tools.org durante os testes; cabeçalhos CORS não se aplicam ao WebSocket.
Deixe o servidor enviar os pings
Para manter conexões ociosas vivas através de proxies, faça o servidor enviar frames de ping; o navegador responde a eles automaticamente. Use o envio periódico só se o seu protocolo espera uma mensagem de aplicação.
Mantenha tokens fora de logs compartilhados
Endereços costumam carregar tokens. A ferramenta guarda o endereço e as mensagens apenas na memória, mas logs exportados e capturas de tela os incluem — remova os segredos antes de compartilhar.

Perguntas frequentes sobre o testador de WebSocket

Posso testar ws://localhost ou um servidor da LAN a partir desta página HTTPS?
Depende do navegador (em outubro de 2026). O Chrome 147 ou mais recente trata conexões WebSocket para o seu computador ou sua rede local como acesso à rede local: na primeira vez, ele pergunta se deve permitir este site e, depois que você escolhe Permitir, as conexões com ws://localhost, ws://127.0.0.1 e ws:// para um endereço IP da LAN como 192.168.1.10 funcionam. No Chrome, o servidor da LAN precisa ser escrito como endereço IP; um nome de host simples (exceto .local) é bloqueado mesmo que resolva para a sua rede. O Firefox conecta ao localhost diretamente, mas bloqueia ws:// para endereços da LAN. O Safari bloqueia ws:// para o localhost e a LAN a partir de páginas HTTPS. O wss:// não é afetado pela regra de conteúdo misto: servidores públicos funcionam a partir desta página em todos os navegadores, desde que o certificado seja confiável; para o localhost ou endereços da LAN, o Chrome também pede primeiro a permissão de rede local.
Por que não consigo conectar a ws://example.com a partir desta página?
Esta página é servida via HTTPS, e os navegadores bloqueiam uma conexão ws:// sem criptografia para um host público a partir de uma página HTTPS (conteúdo misto). Chrome e Firefox recusam imediatamente com um SecurityError, que a ferramenta informa. Use o endereço wss:// do servidor. Sites públicos servidos em http simples não têm essa regra, mas no Chrome recente eles não conseguem alcançar o localhost nem a sua LAN de jeito nenhum.
A conexão falhou com o código 1006 — o que deu errado?
1006 só significa que a conexão terminou sem um handshake de fechamento. Quando um handshake falha, o padrão WebSocket exige que o navegador esconda a causa da página — um 401, um 404, uma porta recusada, um erro de certificado e um Origin rejeitado parecem idênticos (o Firefox informa erros de certificado como 1015) —, então nenhum testador web que se conecta direto do navegador consegue mostrá-la. Pressione F12 e abra o Console: o Chrome e o Edge mostram o status HTTP que o servidor retornou. A ferramenta também separa as falhas antes de a conexão abrir das quedas depois de aberta e lista as causas mais comuns de cada uma.
Posso adicionar um cabeçalho Authorization ou outro cabeçalho personalizado?
Não. A API WebSocket do navegador não deixa páginas web definirem cabeçalhos da requisição; o navegador envia um conjunto fixo (incluindo Origin e os cookies do próprio site do servidor). Alternativas comuns, dependendo do que o seu servidor suporta: um token na URL, como wss://host/ws?token=…; um token passado como subprotocolo (só são permitidos caracteres do tipo token, então JWT funciona, mas Base64 padrão com = ou / não, e o servidor precisa devolver o subprotocolo); ou um cookie, que os navegadores só enviam de forma confiável para o próprio site da página, então a partir desta página ele normalmente não chega ao seu servidor. Ferramentas como o Postman conseguem definir cabeçalhos porque não são navegadores.
Por que funciona no Postman, mas não aqui?
O Postman e os clientes de linha de comando podem definir qualquer cabeçalho e geralmente não enviam Origin. Um navegador não consegue adicionar um cabeçalho Authorization e sempre envia Origin: https://go-tools.org. Se o servidor exige um token em cabeçalho ou verifica o Origin, ele rejeita o handshake do navegador; libere o Origin ou passe o token de outra forma.
O heartbeat envia frames de ping do WebSocket?
Não. Páginas web não podem enviar nem ver frames de ping/pong do protocolo; quando o servidor envia um ping, o navegador responde com um pong sozinho. O envio periódico desta ferramenta envia uma mensagem de texto comum, como {"type":"ping"}, no intervalo que você definir. Ele vem desligado por padrão porque um servidor que não espera essa mensagem pode fechar a conexão. Para manter uma conexão ociosa viva através de um proxy, faça o servidor enviar pings.
Por que não consigo conectar ao meu servidor Socket.IO?
Socket.IO é um protocolo em cima do WebSocket, não WebSocket puro. Um servidor Socket.IO v3/v4 espera o caminho /socket.io/?EIO=4&transport=websocket, envia um pacote de abertura que começa com 0, espera 40 para entrar no namespace padrão e fecha a conexão se cada ping 2 não for respondido com um pong 3. Escolha o preset Socket.IO e a ferramenta faz tudo isso; depois envie eventos como 42["event","data"]. Servidores configurados só para long-polling HTTP não aceitam WebSocket de forma alguma.
Minha conexão cai depois de mais ou menos um minuto — por quê?
Geralmente é um timeout de inatividade em um proxy reverso. Por padrão, o Nginx fecha uma conexão encaminhada quando nenhum dado passa por 60 segundos (proxy_read_timeout), e a página vê o código 1006. Aumente o timeout ou faça o servidor enviar frames de ping. Atrás do Nginx, garanta também que o proxy repasse o upgrade com proxy_set_header Upgrade $http_upgrade; e proxy_set_header Connection "upgrade"; (antes do Nginx 1.29.7, também proxy_http_version 1.1;).
Como conecto a um servidor wss:// com certificado autoassinado?
Abra https://o-mesmo-host:porta/ em uma nova aba, aceite o aviso do certificado, depois volte e conecte. O navegador guarda a exceção para esse host e essa porta. Faça isso só com os seus próprios servidores de teste, porque reduz a proteção do navegador.
Como envio e leio mensagens binárias?
Escolha HEX ou Base64 como formato de envio. O HEX aceita 48 69 00 FF, 0x48,0x69 ou 486900FF; a prévia mostra os bytes, e caracteres inválidos ou um número ímpar de dígitos são apontados com a posição em vez de serem enviados. As mensagens binárias recebidas são exibidas em HEX, 16 bytes por linha, e a barra de ferramentas do log as alterna para Base64. Para ler o HEX recebido como texto, cole-o em Hex para Texto.
Minhas mensagens passam pelos servidores da go-tools?
Não. Seu navegador se conecta diretamente ao endereço que você informa, e as mensagens não passam pelos nossos servidores. A ferramenta também não abre nenhuma conexão WebSocket até você clicar em Conectar, e guarda o endereço e as mensagens apenas na memória — não na URL da página nem no armazenamento do navegador. Como o restante do site, esta página carrega scripts de analytics e de publicidade.
Existe algum servidor para eu testar?
Use o eco local: ele roda dentro desta página, devolve tudo o que você envia e não abre nenhuma conexão de rede. Também existem serviços de eco públicos como wss://echo.websocket.org/, mas eles são de terceiros: a disponibilidade não é garantida, e as suas mensagens vão para esse terceiro.

Ferramentas relacionadas

Ver todas as ferramentas →