Posso testare ws://localhost o un server della LAN da questa pagina HTTPS?
Dipende dal browser (a ottobre 2026). A partire dalla versione 147, Chrome tratta le connessioni WebSocket verso il tuo computer o la tua rete locale come accesso alla rete locale: la prima volta chiede se consentirlo a questo sito e, dopo che hai scelto Consenti, ws://localhost, ws://127.0.0.1 e ws:// verso un indirizzo IP della LAN come 192.168.1.10 si connettono. In Chrome il server della LAN va scritto come indirizzo IP; un semplice nome host (diverso da .local) viene bloccato anche se si risolve nella tua rete. Firefox si connette direttamente a localhost ma blocca ws:// verso gli indirizzi LAN. Safari blocca ws:// verso localhost e la LAN dalle pagine HTTPS. wss:// non è soggetto alla regola del contenuto misto: i server pubblici funzionano da questa pagina in tutti i browser purché il certificato sia attendibile; per localhost o gli indirizzi LAN, anche qui Chrome chiede prima il permesso per la rete locale.
Perché non riesco a connettermi a ws://example.com da questa pagina?
Questa pagina è servita via HTTPS, e i browser bloccano una connessione ws:// non cifrata verso un host pubblico da una pagina HTTPS (contenuto misto). Chrome e Firefox rifiutano subito con un SecurityError, che lo strumento segnala. Usa l'indirizzo wss:// del server. I siti pubblici serviti in semplice http non hanno questa regola, ma nelle versioni recenti di Chrome non possono raggiungere affatto localhost o la tua LAN.
La connessione è fallita con codice 1006: cosa è andato storto?
1006 significa solo che la connessione si è chiusa senza handshake di chiusura. Quando un handshake fallisce, lo standard WebSocket impone al browser di nascondere la causa alla pagina (un 401, un 404, una porta rifiutata, un errore di certificato e un Origin respinto appaiono identici; Firefox segnala gli errori di certificato come 1015), quindi nessun tester web che si connette direttamente dal browser può mostrarla. Premi F12 e apri la Console: Chrome ed Edge stampano lo stato HTTP restituito dal server. Lo strumento distingue inoltre i fallimenti avvenuti prima dell'apertura della connessione dalle interruzioni successive, ed elenca le cause più comuni per ciascun caso.
Posso aggiungere un header Authorization o un altro header personalizzato?
No. L'API WebSocket del browser non permette alle pagine web di impostare header di richiesta; il browser invia un insieme fisso (compresi Origin e i cookie per il sito del server stesso). Le soluzioni più comuni, a seconda di cosa supporta il tuo server: un token nell'URL, come wss://host/ws?token=…; un token passato come sottoprotocollo (sono ammessi solo caratteri token, quindi un JWT funziona ma il Base64 standard con = o / no, e il server deve rimandare indietro il sottoprotocollo); oppure un cookie, che i browser inviano in modo affidabile solo al sito della pagina, quindi da questa pagina di solito non arriva al tuo server. Strumenti come Postman possono impostare header perché non sono browser.
Perché funziona in Postman ma non qui?
Postman e i client da riga di comando possono impostare qualsiasi header e di solito non inviano Origin. Un browser non può aggiungere un header Authorization e invia sempre Origin: https://go-tools.org. Se il server richiede un token nell'header o controlla Origin, rifiuta l'handshake del browser; consenti l'Origin o passa il token in un altro modo.
L'heartbeat invia frame di ping WebSocket?
No. Le pagine web non possono né inviare né vedere i frame ping/pong a livello di protocollo; quando il server invia un ping, il browser risponde da solo con un pong. L'invio temporizzato di questo strumento invia un normale messaggio di testo, come {"type":"ping"}, all'intervallo che imposti. È disattivato per impostazione predefinita perché un server che non si aspetta quel messaggio potrebbe chiudere la connessione. Per mantenere viva una connessione inattiva attraverso un proxy, fai inviare i ping al server.
Perché non riesco a connettermi al mio server Socket.IO?
Socket.IO è un protocollo costruito sopra WebSocket, non un semplice WebSocket. Un server Socket.IO v3/v4 si aspetta il percorso /socket.io/?EIO=4&transport=websocket, invia un pacchetto di apertura che inizia con 0, si aspetta 40 per entrare nel namespace predefinito e chiude la connessione se a ogni ping 2 non si risponde con pong 3. Scegli il preset Socket.IO e lo strumento fa tutto questo; poi invia gli eventi come 42["event","data"]. I server configurati solo per il long-polling HTTP non accettano affatto un WebSocket.
La connessione cade dopo circa un minuto: perché?
Di solito è un timeout di inattività in un reverse proxy. Per impostazione predefinita Nginx chiude una connessione inoltrata quando non passano dati per 60 secondi (proxy_read_timeout), e la pagina vede il codice 1006. Aumenta il timeout o fai inviare frame di ping al server. Dietro Nginx, assicurati anche che il proxy inoltri l'upgrade con proxy_set_header Upgrade $http_upgrade; e proxy_set_header Connection "upgrade"; (prima di Nginx 1.29.7 serve anche proxy_http_version 1.1;).
Come mi connetto a un server wss:// con certificato autofirmato?
Apri https://stesso-host:porta/ in una nuova scheda, accetta l'avviso sul certificato, poi torna qui e connettiti. Il browser ricorda l'eccezione per quell'host e quella porta. Fallo solo per i tuoi server di test, perché riduce la protezione del browser.
Come invio e leggo messaggi binari?
Scegli HEX o Base64 come formato di invio. HEX accetta 48 69 00 FF, 0x48,0x69 o 486900FF; l'anteprima mostra i byte, e i caratteri non validi o un numero dispari di cifre vengono segnalati con la loro posizione invece di essere inviati. I messaggi binari ricevuti sono mostrati in HEX, 16 byte per riga, e la barra degli strumenti del log li passa a Base64. Per leggere come testo l'HEX ricevuto, incollalo in Da Hex a Testo. I miei messaggi passano dai server di go-tools?
No. Il tuo browser si connette direttamente all'indirizzo che inserisci, e i messaggi non passano dai nostri server. Inoltre lo strumento non apre alcuna connessione WebSocket finché non premi Connetti, e conserva indirizzo e messaggi solo in memoria, non nell'URL della pagina né nello storage del browser. Come il resto del sito, questa pagina carica script di analisi e pubblicità.
C'è un server su cui posso fare test?
Usa l'eco locale: gira dentro questa pagina, rimanda indietro tutto ciò che invii e non apre alcuna connessione di rete. Esistono anche servizi di eco pubblici come wss://echo.websocket.org/, ma sono di terze parti: la disponibilità non è garantita e i tuoi messaggi arrivano a quella terza parte.