WebSocket Tester: connetti, invia e registra i frame online | We.Inc
WebSocket tester online gratuito. Apri una connessione ws:// o wss:// dal tuo browser, invia testo o JSON, osserva ogni messaggio e leggi il codice di chiusura quando termina.
WebSocket Tester
Incolla un indirizzo wss:// o ws://, premi Connetti e questo tester apre un vero WebSocket dal tuo browser. Scrivi un messaggio, invialo, e ogni frame in uscita e in entrata finisce in un log con orario. Quando il socket termina vedi il codice di chiusura, il motivo e se l'handshake di chiusura si è concluso correttamente.
Cosa significa ogni valore di readyState
Valore
Costante
Significato
CONNECTING
Creato, handshake non ancora concluso
OPEN
Pronto: send() ora funziona
CLOSING
L'handshake di chiusura è iniziato
CLOSED
Chiuso, oppure la connessione non si è mai aperta
Niente qui passa dai nostri server. La connessione è aperta dall'oggetto WebSocket integrato nella scheda del browser in cui stai leggendo, quindi il server vede il tuo browser, il tuo indirizzo IP e l'origine di questa pagina, https://we.inc. Un server che controlla l'header Origin potrebbe rifiutarla. Poiché questa pagina è servita via https, preferisci un indirizzo wss://; uno ws:// semplice può essere bloccato dal browser perché non sicuro.
Inserisci l'indirizzo del server. Deve iniziare con ws://, wss://, http:// o https:// e non può contenere un frammento #.
Aggiungi i sub-protocol se il server li richiede, separati da virgole, poi premi Connetti.
Scrivi un messaggio e premi Invia, oppure premi Ctrl+Enter nella casella. Spunta l'opzione JSON per verificare che il testo sia valido prima di inviarlo.
Leggi il log: le frecce mostrano la direzione, e la voce di chiusura mostra il codice, il motivo e il flag wasClean.
Premi Chiudi per terminare la sessione con un tuo codice (1000, o qualsiasi valore da 3000 a 4999) e un breve motivo.
Chiuso subito con 1006 e nessun motivo? L'handshake è fallito prima che passasse qualsiasi frame. Controlla l'indirizzo, la porta, il TLS e se il server rifiuta origini esterne.
I browser nascondono di proposito i dettagli dell'handshake agli script, quindi l'evento error non dice mai il perché. Apri il pannello Network degli strumenti per sviluppatori e filtra per WS per vedere lo stato HTTP dell'upgrade.
I browser considerano localhost e 127.0.0.1 indirizzi affidabili, quindi ws://localhost:PORT è il modo più semplice per provare un server in esecuzione sulla tua macchina.
I frame binari arrivano come oggetti Blob per impostazione predefinita. Questo tester ne mostra la dimensione in byte invece di provare a stamparli.
Tieni brevi i motivi di chiusura: il browser lancia un SyntaxError se il motivo supera i 123 byte una volta codificato in UTF-8.
Domande frequenti
Perché la connessione fallisce qui ma funziona nella mia app?
La causa abituale è un controllo sull'origine. La tua app si connette dalla propria origine, mentre questa pagina si connette da https://we.inc. Se il server accetta solo origini in elenco, rifiuta l'handshake e il browser riporta il codice di chiusura 1006. L'altra cosa da provare è la forma wss:// dell'indirizzo, dato che questa pagina è servita via https.
I miei dati vengono inviati a We.Inc?
No. La pagina crea solo un socket nella tua scheda e scrive su un log in memoria. I messaggi vanno direttamente tra il tuo browser e il server che hai digitato. Ricaricare la pagina svuota il log.
Posso impostare header personalizzati come Authorization?
Non da un browser. Il costruttore WebSocket accetta solo un URL e un elenco opzionale di sub-protocol. I server che richiedono un token di solito lo leggono da una query string, da un cookie o dal primo messaggio dopo l'apertura della connessione.
Perché non posso inviare un ping da questo strumento?
L'interfaccia WebSocket del browser ha solo send() e close() come metodi. Ping e pong sono frame di controllo a cui il browser risponde da solo quando un server lo pinga, quindi gli script della pagina non li vedono mai. Invia un normale messaggio di testo se il tuo server usa un heartbeat a livello applicativo.
Quali codici di chiusura posso inviare?
Gli script possono passare a close() solo 1000 o un codice da 3000 a 4999. Qualsiasi altro numero lancia un InvalidAccessError. I codici nell'intervallo da 1001 a 1015 sono impostati direttamente da browser e server.
Cosa succede quando premi Connetti
Il browser invia una normale richiesta HTTP con Upgrade: websocket, una Sec-WebSocket-Key casuale e un header Origin. Un server disponibile risponde con lo stato 101 Switching Protocols e un valore Sec-WebSocket-Accept ricavato da quella chiave. Da quel momento la stessa connessione TCP trasporta frame in entrambe le direzioni.
Ogni tentativo termina con un evento open o un evento close. Se vedi close senza open, l'upgrade non è mai riuscito, il che restringe il problema all'indirizzo, alla rete o alle regole di handshake del server.
Leggere l'evento close
La voce di chiusura nel log contiene tre cose. code è il numero della tabella qui sotto. reason è l'eventuale testo inviato dall'altro lato, spesso vuoto. wasClean è true solo quando entrambi i lati si sono scambiati i frame di chiusura, quindi false di solito significa che la rete è caduta o il server si è bloccato.
Codici di chiusura WebSocket
L'intervallo da 1000 a 1015 è definito per il protocollo stesso. Da 3000 a 3999 è registrato presso IANA per librerie e framework, e da 4000 a 4999 è libero per uso privato tra il tuo client e il tuo server.
I codici di chiusura e cosa ti dicono
Codice
Nome
Cosa significa di solito
Normal Closure
Il lavoro è finito e il socket è stato chiuso intenzionalmente
Going Away
Il server si sta spegnendo o la pagina è stata abbandonata
Protocol error
Uno dei lati ha violato le regole di framing
Unsupported Data
Dati di un tipo che l'endpoint non accetta, ad esempio binari verso un server solo testo
No Status Received
Riservato: è arrivato un frame di chiusura senza codice
Abnormal Closure
Riservato: nessun frame di chiusura, spesso un handshake fallito o una rete caduta
Invalid frame payload data
Un messaggio aveva dati incoerenti, ad esempio testo non UTF-8
Policy Violation
Un rifiuto generico quando 1003 e 1009 non sono adatti
Message Too Big
Un frame era più grande di quanto l'endpoint accetta
Mandatory Ext.
Il client voleva un'estensione che il server non ha accettato
Internal Error
Il server ha incontrato una condizione imprevista
Service Restart
Il server si sta riavviando
Try Again Later
Una condizione temporanea come un sovraccarico
Bad Gateway
Un proxy ha ricevuto una risposta non valida dal server upstream
TLS handshake
Riservato: l'handshake TLS è fallito, ad esempio per un certificato non attendibile
3000 to 3999
Registrati
Definiti da librerie e framework
4000 to 4999
Uso privato
Qualunque cosa concordino il tuo client e il tuo server
Lo stesso client in poche righe di JavaScript
Client minimo per il browser
È ciò che il tester fa dietro le quinte: apre, registra ogni messaggio e riporta il codice di chiusura.
Sub-protocol (opzionali, separati da virgole)
Connetti
Chiudi
Codice di chiusura
Motivo di chiusura
Messaggio
Invia
Ctrl+Enter per inviare
Verifica che il messaggio sia JSON valido
Svuota log
Stato: {v}
Log dei frame
Ancora niente. Connettiti a un server per avviare il log.
Connesso. Il server ha scelto il sub-protocol: {v}
Chiuso con codice {n}, motivo "{v}", wasClean {c}
Evento error: il browser non dice il perché. Controlla il pannello Network.