¿Puedo probar ws://localhost o un servidor de la LAN desde esta página HTTPS?
Depende del navegador (a octubre de 2026). Chrome 147 y posteriores tratan las conexiones WebSocket a tu ordenador o a tu red local como acceso a la red local: la primera vez preguntan si permitir este sitio y, cuando eliges Permitir, se conectan ws://localhost, ws://127.0.0.1 y ws:// a una dirección IP de la LAN como 192.168.1.10. En Chrome, el servidor de la LAN debe escribirse como dirección IP; un nombre de host sin más (que no sea .local) se bloquea aunque se resuelva a tu red. Firefox se conecta a localhost directamente, pero bloquea ws:// a direcciones de la LAN. Safari bloquea ws:// a localhost y a la LAN desde páginas HTTPS. A wss:// no le afecta la regla de contenido mixto: los servidores públicos funcionan desde esta página en todos los navegadores siempre que el certificado sea de confianza; para localhost o direcciones de la LAN, Chrome también pide aquí primero el permiso de red local.
¿Por qué no puedo conectarme a ws://example.com desde esta página?
Esta página se sirve por HTTPS, y los navegadores bloquean una conexión ws:// sin cifrar a un host público desde una página HTTPS (contenido mixto). Chrome y Firefox la rechazan de inmediato con un SecurityError, que la herramienta informa. Usa la dirección wss:// del servidor. Los sitios públicos servidos por http simple no tienen esta regla, pero en Chrome reciente no pueden llegar en absoluto a localhost ni a tu LAN.
La conexión falló con el código 1006: ¿qué ha pasado?
1006 solo significa que la conexión terminó sin handshake de cierre. Cuando un handshake falla, el estándar WebSocket obliga al navegador a ocultar la causa a la página —un 401, un 404, un puerto rechazado, un error de certificado y un Origin rechazado se ven idénticos (Firefox notifica los errores de certificado como 1015)—, así que ningún tester web que se conecte directamente desde el navegador puede mostrarla. Pulsa F12 y abre la consola: Chrome y Edge muestran el estado HTTP que devolvió el servidor. La herramienta además distingue los fallos antes de abrirse la conexión de las caídas después de abierta, y enumera las causas habituales de cada caso.
¿Puedo añadir una cabecera Authorization u otra cabecera personalizada?
No. La API WebSocket del navegador no permite a las páginas web definir cabeceras de la petición; el navegador envía un conjunto fijo (que incluye Origin y las cookies del propio sitio del servidor). Alternativas habituales, según lo que admita tu servidor: un token en la URL, como wss://host/ws?token=…; un token pasado como subprotocolo (solo se permiten caracteres de tipo token, así que un JWT funciona pero un Base64 estándar con = o / no, y el servidor debe devolver el subprotocolo); o una cookie, que los navegadores solo envían de forma fiable al propio sitio de la página, así que desde esta página normalmente no llega a tu servidor. Herramientas como Postman pueden definir cabeceras porque no son navegadores.
¿Por qué funciona en Postman pero no aquí?
Postman y los clientes de línea de comandos pueden definir cualquier cabecera y normalmente no envían Origin. Un navegador no puede añadir una cabecera Authorization y siempre envía Origin: https://go-tools.org. Si el servidor necesita un token en una cabecera o comprueba el Origin, rechaza el handshake del navegador; permite el Origin o pasa el token de otra forma.
¿El heartbeat envía tramas ping de WebSocket?
No. Las páginas web no pueden enviar ni ver las tramas ping/pong del protocolo; cuando el servidor envía un ping, el navegador responde con un pong por sí solo. El envío periódico de esta herramienta envía un mensaje de texto normal, como {"type":"ping"}, con el intervalo que configures. Está desactivado por defecto porque un servidor que no espera ese mensaje puede cerrar la conexión. Para mantener viva una conexión inactiva a través de un proxy, haz que el servidor envíe pings.
¿Por qué no puedo conectarme a mi servidor Socket.IO?
Socket.IO es un protocolo sobre WebSocket, no WebSocket puro. Un servidor Socket.IO v3/v4 espera la ruta /socket.io/?EIO=4&transport=websocket, envía un paquete de apertura que empieza por 0, espera 40 para unirse al namespace por defecto y cierra la conexión si cada ping 2 no recibe un pong 3. Elige el preajuste Socket.IO y la herramienta hace todo esto; luego envía los eventos como 42["event","data"]. Los servidores configurados solo para long-polling HTTP no aceptan ningún WebSocket.
Mi conexión se cae al cabo de un minuto más o menos: ¿por qué?
Normalmente es un tiempo de espera por inactividad en un proxy inverso. Nginx cierra por defecto una conexión proxificada cuando no pasan datos durante 60 segundos (proxy_read_timeout), y la página ve el código 1006. Aumenta ese tiempo de espera o haz que el servidor envíe tramas ping. Detrás de Nginx, asegúrate también de que el proxy reenvía el upgrade con proxy_set_header Upgrade $http_upgrade; y proxy_set_header Connection "upgrade"; (antes de Nginx 1.29.7, también proxy_http_version 1.1;).
¿Cómo me conecto a un servidor wss:// con un certificado autofirmado?
Abre https://el-mismo-host:puerto/ en una pestaña nueva, acepta el aviso del certificado y vuelve para conectarte. El navegador recuerda la excepción para ese host y ese puerto. Hazlo solo con tus propios servidores de prueba, porque reduce la protección del navegador.
¿Cómo envío y leo mensajes binarios?
Elige HEX o Base64 como formato de envío. HEX acepta 48 69 00 FF, 0x48,0x69 o 486900FF; la vista previa muestra los bytes, y los caracteres no válidos o una cantidad impar de dígitos se señalan con su posición en lugar de enviarse. Los mensajes binarios recibidos se muestran en HEX, 16 bytes por línea, y la barra de herramientas del registro los cambia a Base64. Para leer como texto el HEX recibido, pégalo en Hexadecimal a texto. ¿Mis mensajes pasan por los servidores de go-tools?
No. Tu navegador se conecta directamente a la dirección que introduces, y los mensajes no pasan por nuestros servidores. Además, la herramienta no abre ninguna conexión WebSocket hasta que pulsas Conectar, y guarda la dirección y los mensajes solo en memoria, no en la URL de la página ni en el almacenamiento del navegador. Como el resto del sitio, esta página carga scripts de analítica y publicidad.
¿Hay algún servidor contra el que pueda probar?
Usa el eco local: se ejecuta dentro de esta página, devuelve todo lo que envías y no abre ninguna conexión de red. También existen servicios de eco públicos como wss://echo.websocket.org/, pero son de terceros: su disponibilidad no está garantizada y tus mensajes llegan a ese tercero.