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.