WebSocket-tester: online verbinden, versturen en frames loggen | We.Inc
Gratis online WebSocket-tester. Open een ws:// of wss://-verbinding vanuit uw browser, stuur tekst of JSON, volg elk bericht en lees de sluitcode zodra de verbinding stopt.
WebSocket-tester
Plak een wss:// of ws://-adres, druk op Verbinden en deze tester opent een echte WebSocket vanuit uw eigen browser. Typ een bericht, verstuur het, en elk uitgaand en inkomend frame komt in een log met tijdstempels. Als de socket stopt, ziet u de sluitcode, de reden en of de afsluitende handshake netjes is afgerond.
Wat elk readyState-getal betekent
Waarde
Constante
Betekenis
CONNECTING
Aangemaakt, handshake nog niet klaar
OPEN
Klaar: send() werkt nu
CLOSING
De afsluitende handshake is begonnen
CLOSED
Gesloten, of de verbinding is nooit geopend
Niets hiervan gaat via onze servers. De verbinding wordt geopend door het WebSocket-object dat ingebouwd is in het browsertabblad waarin u dit leest, dus de server ziet uw browser, uw IP-adres en de origin van deze pagina, https://we.inc. Een server die de Origin-header controleert, kan hem weigeren. Omdat deze pagina via https wordt geserveerd, kunt u beter een wss://-adres gebruiken; een gewoon ws://-adres kan door de browser als onveilig worden geblokkeerd.
Voer het serveradres in. Het moet beginnen met ws://, wss://, http:// of https:// en mag geen #-fragment bevatten.
Voeg sub-protocollen toe als de server die verwacht, gescheiden door komma's, en druk dan op Verbinden.
Schrijf een bericht en druk op Versturen, of druk op Ctrl+Enter in het invoerveld. Vink de JSON-optie aan om te controleren of de tekst parset voordat hij verstuurd wordt.
Lees de log: pijlen tonen de richting, en de sluitregel toont de code, de reden en de wasClean-vlag.
Druk op Sluiten om de sessie te beëindigen met uw eigen code (1000, of iets van 3000 tot 4999) en een korte reden.
Direct gesloten met 1006 en geen reden? De handshake mislukte voordat er een frame verstuurd werd. Controleer het adres, de poort, TLS en of de server vreemde origins weigert.
Browsers verbergen handshakedetails bewust voor scripts, dus het error-event zegt nooit waarom. Open het Network-paneel van de developer tools en filter op WS om de HTTP-status van de upgrade te zien.
Browsers behandelen localhost en 127.0.0.1 als betrouwbare adressen, dus ws://localhost:PORT is de makkelijkste manier om een server op uw eigen machine te testen.
Binaire frames komen standaard binnen als Blob-objecten. Deze tester toont hun grootte in bytes in plaats van te proberen ze af te drukken.
Houd sluitredenen kort: de browser gooit een SyntaxError als de reden na codering als UTF-8 langer is dan 123 bytes.
Veelgestelde vragen
Waarom mislukt mijn verbinding hier, terwijl hij in mijn eigen app werkt?
De gebruikelijke oorzaak is een origin-controle. Uw app verbindt vanaf zijn eigen origin, terwijl deze pagina verbindt vanaf https://we.inc. Accepteert de server alleen vermelde origins, dan weigert hij de handshake en meldt de browser sluitcode 1006. Probeer verder de wss://-vorm van het adres, aangezien deze pagina zelf via https wordt geserveerd.
Wordt mijn data naar We.Inc gestuurd?
Nee. De pagina maakt alleen een socket aan in uw tabblad en schrijft naar een log in het geheugen. Berichten gaan rechtstreeks tussen uw browser en de server die u hebt ingetypt. Herladen van de pagina wist de log.
Kan ik eigen headers instellen, zoals Authorization?
Niet vanuit een browser. De WebSocket-constructor accepteert alleen een URL en een optionele lijst met sub-protocollen. Servers die een token nodig hebben, lezen die meestal uit een query string, een cookie of het eerste bericht nadat de verbinding is geopend.
Waarom kan ik met deze tool geen ping versturen?
De WebSocket-interface van de browser heeft alleen send() en close() als methoden. Ping en pong zijn control frames die de browser zelf beantwoordt wanneer een server hem pingt, dus paginascripts zien ze nooit. Stuur een gewoon tekstbericht als uw server een heartbeat op applicatieniveau gebruikt.
Welke sluitcodes kan ik versturen?
Scripts mogen alleen 1000 of een code van 3000 tot 4999 aan close() meegeven. Elk ander getal gooit een InvalidAccessError. Codes in het bereik 1001 tot 1015 worden door browsers en servers zelf ingesteld.
Wat er gebeurt als u op Verbinden drukt
De browser stuurt een gewone HTTP-request met Upgrade: websocket, een willekeurige Sec-WebSocket-Key en een Origin-header. Een bereidwillige server antwoordt met status 101 Switching Protocols en een Sec-WebSocket-Accept-waarde die van die key is afgeleid. Vanaf dat moment vervoert dezelfde TCP-verbinding frames in beide richtingen.
Elke poging eindigt met een open-event of een close-event. Ziet u close zonder open, dan is de upgrade nooit gelukt, en dat beperkt de fout tot het adres, het netwerk of de handshakeregels van de server.
Het close-event lezen
De sluitregel in de log bevat drie dingen. code is het getal uit de tabel hieronder. reason is eventuele tekst die de andere kant stuurde, vaak leeg. wasClean is alleen true als beide kanten close frames hebben uitgewisseld, dus false betekent meestal dat het netwerk wegviel of de server crashte.
WebSocket-sluitcodes
Het bereik 1000 tot 1015 is gedefinieerd voor het protocol zelf. 3000 tot 3999 is bij IANA geregistreerd voor libraries en frameworks, en 4000 tot 4999 is vrij voor privégebruik tussen uw eigen client en server.
Sluitcodes en wat ze u vertellen
Code
Naam
Wat het meestal betekent
Normal Closure
Het werk is klaar en de socket is bewust gesloten
Going Away
De server sluit af of de pagina is weggenavigeerd
Protocol error
Een van beide kanten brak de framingregels
Unsupported Data
Data van een type dat het endpoint niet accepteert, zoals binair naar een server die alleen tekst aankan
No Status Received
Gereserveerd: er kwam een close frame zonder code binnen
Abnormal Closure
Gereserveerd: helemaal geen close frame, vaak een mislukte handshake of weggevallen netwerk
Invalid frame payload data
Een bericht had inconsistente data, bijvoorbeeld tekst die geen UTF-8 is
Policy Violation
Een algemene weigering als 1003 en 1009 niet passen
Message Too Big
Een frame was groter dan het endpoint accepteert
Mandatory Ext.
De client wilde een extensie waarmee de server niet instemde
Internal Error
De server kwam een onverwachte situatie tegen
Service Restart
De server wordt herstart
Try Again Later
Een tijdelijke situatie, zoals overbelasting
Bad Gateway
Een proxy kreeg een ongeldig antwoord van de upstream-server
TLS handshake
Gereserveerd: de TLS-handshake mislukte, bijvoorbeeld door een niet-vertrouwd certificaat
3000 to 3999
Geregistreerd
Gedefinieerd door libraries en frameworks
4000 to 4999
Privégebruik
Wat uw client en server ook afspreken
Dezelfde client in een paar regels JavaScript
Minimale browserclient
Dit is wat de tester onder de motorkap doet: openen, elk bericht loggen en de sluitcode melden.
Sub-protocollen (optioneel, gescheiden door komma's)
Verbinden
Sluiten
Sluitcode
Sluitreden
Bericht
Versturen
Ctrl+Enter verstuurt
Controleer of het bericht geldige JSON is
Log wissen
Status: {v}
Framelog
Nog niets. Verbind met een server om de log te starten.
Verbonden. De server koos sub-protocol: {v}
Gesloten met code {n}, reden "{v}", wasClean {c}
Error-event: de browser zegt niet waarom. Controleer het Network-paneel.