Skip to content

WebSocket-tester online (ws/wss-client)

Test een WebSocket (ws/wss) in je browser: verstuur echte binaire frames vanuit HEX/Base64, lees binaire berichten als HEX, zie sluitcodes met reden en checklist. Berichten gaan rechtstreeks naar je server, niet naar de onze.

Draait in je browser Gratis
Je browser stuurt berichten rechtstreeks naar de server die je invoert — ze gaan niet via servers van go-tools.
Invullen: (echodienst van een derde partij: beschikbaarheid niet gegarandeerd, en je berichten gaan naar die derde partij)
Niet verbonden

Berichten verschijnen hier. De tool opent geen WebSocket-verbinding totdat je op Verbinden klikt.

Periodiek versturen (heartbeat op applicatieniveau)
ms

Dit verstuurt een gewoon tekstbericht op een timer. Het is geen ping-frame op protocolniveau — webpagina's kunnen ping/pong-frames niet versturen en niet zien. Standaard uit, omdat een server die het niet verwacht de verbinding kan sluiten.

Verbinden, tekst- en binaire berichten, sluitcodes, mislukte handshakes, de verbindingstime-out, de Socket.IO-handshake, heartbeat, opnieuw verbinden en een stortvloed van 10.000 berichten zijn end-to-end getest tegen een lokale WebSocket-server; het browsergedrag dat op deze pagina wordt beschreven, is in oktober 2026 gemeten in Chromium, Firefox en WebKit. — Go Tools Engineering Team · Oct 13, 2026

Gebouwd en geverifieerd door het engineeringteam van Go Tools.

Snelle antwoorden over de WebSocket-tester

Kan deze HTTPS-pagina verbinding maken met ws://localhost?

Ja in Chrome, nadat je toegang tot het lokale netwerk toestaat Dat hangt af van de browser (stand van zaken in oktober 2026). Chrome 147 en nieuwer vraagt eerst of de pagina toegang mag krijgen tot apparaten in je lokale netwerk; nadat je Toestaan kiest, maken ws://localhost en ws:// naar een LAN-IP-adres verbinding. Firefox maakt direct verbinding met localhost, maar blokkeert LAN-adressen. Safari blokkeert ws:// vanaf HTTPS-pagina's.

Waarom meldt een mislukte verbinding alleen 1006?

De browser verbergt de reden Als de handshake mislukt, mogen browsers de pagina alleen een error-event en sluitcode 1006 geven — nooit de HTTP-status of de reden. Druk op F12: de console van Chrome en Edge toont de statuscode die de server teruggaf.

Kan ik een Authorization-header toevoegen?

Browsers kunnen geen headers instellen Nee. De WebSocket-API van de browser kan geen requestheaders instellen. Zet het token in een URL-parameter, een subprotocol of een cookie — afhankelijk van wat je server accepteert.

Is de heartbeat een ping-frame?

Het is een gewoon bericht Nee. Webpagina's kunnen ping/pong-frames op protocolniveau niet versturen en niet zien; de browser beantwoordt pings van de server zelf. Periodiek versturen is hier een gewoon tekstbericht met een vast interval, en het staat standaard uit.

Waarom kan ik geen verbinding maken met een Socket.IO-server?

Gebruik de Socket.IO-preset Socket.IO is geen kale WebSocket. Kies de Socket.IO-preset: die maakt verbinding met /socket.io/?EIO=4&transport=websocket, antwoordt 40 op het open-pakket en beantwoordt elke ping 2 met pong 3 (Socket.IO v3/v4).

Wat is een online WebSocket-tester?

Een WebSocket-tester is een client die je op een WebSocket-server richt om te zien of die een verbinding accepteert en wat hij terugstuurt. Je voert een ws://- of wss://-adres in, maakt verbinding, verstuurt tekst- of binaire berichten en leest de antwoorden — de snelste manier om een backend-endpoint, een reverse proxy of een apparaat dat WebSocket spreekt te controleren zonder clientcode te schrijven.

Deze tester draait in je browser: de verbinding loopt rechtstreeks van je browser naar de server die je invoert, en berichten gaan niet via servers van go-tools. Dat betekent ook dat de beperkingen van de browser gelden. Hij kan geen eigen requestheaders toevoegen, geen ping-frames op protocolniveau versturen, en als een handshake mislukt, vertelt de browser de pagina alleen sluitcode 1006, niet waarom.

Wat hij toevoegt ten opzichte van een kale browserconsole: binaire berichten getoond als HEX (of Base64) en vanuit HEX of Base64 verstuurd als echte binaire frames, automatisch geformatteerde JSON, uitgelegde sluitcodes, een checklist als een verbinding mislukt, een waarschuwing vóór het verbinden als de browser het adres waarschijnlijk blokkeert, en een log die vlot blijft bij ongeveer 2.000 berichten per seconde (gemeten).

09:30:01.204 · Connecting to ws://localhost:8080/ws
09:30:01.219 · Connected · subprotocol: chat
09:30:02.517 → TXT 17 B {"type":"hello"}
09:30:02.531 ← TXT 25 B {"type":"hello","ok":true}
09:30:03.002 → BIN 4 B 48 69 00 FF
09:30:03.010 ← BIN 4 B 48 69 00 FF
09:30:09.880 · Closed · code 4001: application-defined code

Wat deze WebSocket-tester doet

Localhost en LAN: advies per browser vóór je verbinding maakt

Voordat je verbinding maakt, controleert de tool het adres: een onversleutelde ws:// naar een domeinnaam wordt vanaf deze HTTPS-pagina geblokkeerd, dus dat meldt de tool en stelt wss:// voor. Bij localhost en LAN-IP-adressen vertelt hij dat Chrome om toegang tot het lokale netwerk vraagt, en hoe Firefox en Safari daarvan afwijken (stand van zaken in oktober 2026).

Binaire berichten als HEX, echt binair versturen

Ontvangen binaire berichten worden getoond als HEX, 16 bytes per regel, of als Base64. Typ bytes als 48 69 00 FF, 0x48,0x69 of Base64 en ze gaan de deur uit als binair bericht; ongeldige tekens en een oneven aantal cijfers worden gemeld met hun positie, en het bytevoorbeeld toont precies wat er wordt verstuurd.

Sluitcodes en fouten waar je iets mee kunt

Bij elke sluiting zie je de code, de redentekst en of de closing handshake is afgerond, met de betekenis van de standaardcodes 1000–1015 en een opmerking bij de applicatiecodes 4000–4999. Een fout voordat de verbinding openging levert een checklist op in plaats van een gok.

Snelle log met zoeken en exporteren

Berichten worden één keer per frame getekend, zodat de pagina in onze tests vlot blijft bij ongeveer 2.000 berichten per seconde. Elke regel heeft richting, tijdstempel tot op de milliseconde, type en grootte in bytes. Filter op richting, zoek, pauzeer de weergave, bewaar de laatste N regels, kopieer of exporteer als tekst.

Subprotocollen, time-out, Socket.IO-preset

Vraag een of meer subprotocollen aan (gescheiden door komma's) en kijk of de server er een heeft bevestigd. Een verbindingstime-out beëindigt handshakes waar de server nooit op antwoordt. De Socket.IO-preset voltooit de Engine.IO v4-handshake en beantwoordt pings voor je.

Heartbeat en opnieuw verbinden alleen als je dat wilt

Periodiek versturen herhaalt een bericht naar keuze met een vast interval, en automatisch opnieuw verbinden probeert het na een onverwachte onderbreking opnieuw met exponentiële backoff. Beide staan standaard uit, en de tool verstuurt nooit iets waar je niet om hebt gevraagd.

WebSocket-testvoorbeelden: localhost, binair, sluitcodes, Socket.IO

Een lokale ontwikkelserver testen

ws://localhost:8080/ws
Verbonden
→ TXT 17 B {"type":"hello"}
← TXT 25 B {"type":"hello","ok":true}

In Chrome 147 en nieuwer vraagt de browser eerst of toegang tot je lokale netwerk is toegestaan; kies Toestaan. Firefox maakt direct verbinding met localhost; Safari blokkeert ws:// vanaf deze HTTPS-pagina (stand van zaken in oktober 2026).

Een binair bericht versturen vanuit HEX

48 69 00 FF
→ BIN 4 B 48 69 00 FF

In HEX-modus verstuurt de tool een binair bericht met deze vier bytes, niet de tekst 48 69 00 FF. Base64 SGkA/w== verstuurt dezelfde vier bytes.

Een sluiting door de server lezen

Server sluit met code 4001, reden "token expired"
Gesloten · code 4001: door de applicatie gedefinieerde code · netjes gesloten
Reden: token expired

Codes 4000–4999 worden door de applicatie gedefinieerd, dus zoek 4001 op in de documentatie van de server. Codes 1000–1015 zijn standaard en worden in de log uitgelegd.

Verbinding maken met een Socket.IO-server

Protocol: Socket.IO v3/v4, adres ws://localhost:3000
Verbinden met ws://localhost:3000/socket.io/?EIO=4&transport=websocket
← 0{"sid":"…","pingInterval":25000,…}
→ 40
← 40{"sid":"…"}

De preset vult het Socket.IO-pad en de query in, antwoordt 40 om de standaard-namespace te betreden en beantwoordt elke ping 2 met 3. Verstuur events als 42["event","data"].

Zo test je een WebSocket online

  1. 1

    Voer het serveradres in

    Typ of plak een ws://- of wss://-adres; http:// en https:// worden behandeld als ws:// en wss://. Let op de melding onder het adres: die waarschuwt als de browser het waarschijnlijk blokkeert.

  2. 2

    Voeg subprotocollen toe als de server die nodig heeft

    Sommige servers vereisen een subprotocol, bijvoorbeeld mqtt. Voer er een of meer in, gescheiden door komma's. Na het verbinden toont de log welke de server heeft bevestigd.

  3. 3

    Maak verbinding

    Klik op Verbinden. Voor localhost of een LAN-adres in Chrome kies je Toestaan als er wordt gevraagd naar toegang tot het lokale netwerk. Mislukt de verbinding, volg dan de checklist die verschijnt.

  4. 4

    Verstuur en lees berichten

    Kies Tekst, HEX of Base64, controleer het voorbeeld en druk op Ctrl+Enter. Ontvangen JSON wordt geformatteerd en binaire data wordt als HEX getoond; in de werkbalk van de log schakel je binaire data om naar Base64.

  5. 5

    Filter en kopieer of exporteer daarna

    Filter op richting of doorzoek de log, pauzeer de weergave tijdens een stortvloed aan berichten, en kopieer of exporteer de log daarna als tekst met tijdstempels, richting en grootte in bytes.

Veelgemaakte fouten bij WebSocket-verbindingen

ws:// naar een domeinnaam vanaf een HTTPS-pagina

Browsers blokkeren onversleutelde ws:// naar een domeinnaam vanaf een pagina die via HTTPS is geladen (mixed content). Chrome en Firefox weigeren meteen met een SecurityError. Gebruik wss://; voor een LAN-server in Chrome schrijf je het IP-adres (toegang tot het lokale netwerk moet dan zijn toegestaan).

✗ Fout
ws://api.example.com/ws
✓ Correct
wss://api.example.com/ws

HEX getypt in tekstmodus

In tekstmodus wordt 48 69 verstuurd als de teksttekens 4, 8, spatie, 6, 9. Schakel over naar HEX om de bytes 0x48 0x69 als binair bericht te versturen.

✗ Fout
Tekstmodus: 48 69 → TXT 5 B
✓ Correct
HEX-modus: 48 69 → BIN 2 B

Socket.IO-URL gebruikt als kale WebSocket

Een Socket.IO-server weigert een kale WebSocket op zijn rootpad, en zonder antwoorden op zijn handshake en pings sluit hij de verbinding. Gebruik de Socket.IO-preset.

✗ Fout
ws://localhost:3000
✓ Correct
ws://localhost:3000/socket.io/?EIO=4&transport=websocket

Token in een requestheader

Browsers kunnen bij een WebSocket-handshake geen Authorization-header meesturen. Als je server het toestaat, geef het token dan mee als URL-parameter of als subprotocol.

✗ Fout
Authorization: Bearer eyJ…
✓ Correct
wss://api.example.com/ws?token=eyJ…

Wanneer een online WebSocket-tester handig is

Een backend-endpoint controleren
Controleer of een nieuwe WebSocket-route antwoordt, bekijk de eerste berichten die hij verstuurt en test hoe hij omgaat met ongeldige invoer — nog voordat de frontend bestaat.
Een reverse proxy debuggen
Draait de server achter Nginx of een gateway? Kijk dan of de upgrade erdoor komt en hoe lang een inactieve verbinding openblijft.
IoT en binaire protocollen
Apparaten en brokers die binair over WebSocket communiceren, kun je als HEX uitlezen en exacte bytes sturen vanuit HEX of Base64.
Sluitcodes reproduceren
Bekijk welke sluitcode en reden de server echt verstuurt, bijvoorbeeld als een token verloopt of een client tegen een rate limit aanloopt.
Weergave bij veel berichten
Kijk hoe een server ongeveer 2.000 berichten per seconde (gemeten) pusht zonder dat de pagina bevriest, met tellers voor berichten en bytes.

Zo werken WebSocket-verbindingen in de browser

De opening handshake
Een WebSocket begint als HTTP-request met Upgrade: websocket. De browser stelt de requestheaders zelf samen — Origin, Sec-WebSocket-Key, Sec-WebSocket-Version: 13 en Sec-WebSocket-Protocol uit de lijst met subprotocollen — en de pagina kan er geen andere aan toevoegen. De server antwoordt 101 Switching Protocols, en vanaf dan wisselen beide kanten berichten uit.
Tekst- en binaire berichten
send() met een string verstuurt een tekstbericht in UTF-8; send() met bytes verstuurt een binair bericht. Pagina's ontvangen altijd hele berichten, nooit frames, fragmenten of maskers. Deze tool zet binaryType op arraybuffer, zodat binaire berichten in volgorde binnenkomen en als HEX getoond kunnen worden.
Waarom fouten geen details bevatten
De WebSocket-standaard verbiedt browsers om scripts te vertellen waarom een verbinding mislukte — een DNS-fout, een geweigerde poort, een certificaatfout of HTTP 401 zien er allemaal hetzelfde uit — zodat een pagina je lokale netwerk niet kan aftasten. Pagina's zien een error-event en sluitcode 1006 (Firefox meldt certificaatfouten als 1015).
Mixed content en toegang tot het lokale netwerk
Een HTTPS-pagina mag geen onversleutelde ws:// naar een openbare host openen. Vanaf Chrome 147 valt WebSocket bovendien onder Local Network Access: om vanaf een openbare pagina localhost of een privé-IP te bereiken is je toestemming nodig. Firefox zondert loopback-adressen uit, Safari niet (stand van zaken in oktober 2026).
Sluitcodes
Een client mag alleen sluiten met 1000 of 3000–4999, en de reden mag hoogstens 123 bytes UTF-8 zijn. 1005 (geen statuscode) en 1006 (abnormale sluiting) worden nooit over het netwerk verstuurd; de browser meldt ze zelf. 1015 wordt bij TLS-fouten alleen door sommige browsers gemeld.

Tips voor het testen van WebSockets

Gebruik wss:// buiten je eigen machine
Versleutelde wss:// met een vertrouwd certificaat bereikt publieke servers vanaf deze pagina in elke browser en beschermt tokens in de URL; voor localhost- of LAN-adressen vraagt Chrome nog steeds eerst om toegang tot het lokale netwerk. Bewaar onversleutelde ws:// voor localhost.
Kijk in de console als de handshake mislukt
De pagina ziet alleen 1006. Chrome en Edge tonen de HTTP-status in de console, en die wijst meestal direct naar een probleem met authenticatie, pad of proxy.
Sta de Origin toe op de server
Browsers sturen altijd Origin mee. Controleert je server die, sta dan tijdens het testen https://go-tools.org toe; CORS-headers gelden niet voor WebSocket.
Laat de server pings versturen
Laat de server ping-frames versturen om inactieve verbindingen via proxy's open te houden; de browser beantwoordt ze automatisch. Gebruik periodiek versturen alleen als je protocol een applicatiebericht verwacht.
Houd tokens uit gedeelde logs
Adressen bevatten vaak tokens. De tool bewaart adres en berichten alleen in het geheugen, maar geëxporteerde logs en screenshots bevatten ze wel — verwijder geheimen voordat je iets deelt.

Veelgestelde vragen over de WebSocket-tester

Kan ik ws://localhost of een LAN-server testen vanaf deze HTTPS-pagina?
Dat hangt af van de browser (stand van zaken in oktober 2026). Chrome 147 en nieuwer behandelt WebSocket-verbindingen naar je computer of je lokale netwerk als toegang tot het lokale netwerk: de eerste keer vraagt hij of je deze site dat toestaat, en nadat je Toestaan kiest, maken ws://localhost, ws://127.0.0.1 en ws:// naar een LAN-IP-adres zoals 192.168.1.10 verbinding. In Chrome moet de LAN-server als IP-adres worden geschreven; een gewone hostnaam (behalve .local) wordt geblokkeerd, ook als die naar je netwerk verwijst. Firefox maakt direct verbinding met localhost, maar blokkeert ws:// naar LAN-adressen. Safari blokkeert ws:// naar localhost en het LAN vanaf HTTPS-pagina's. wss:// valt niet onder de mixed-content-regel: publieke servers werken vanaf deze pagina in elke browser zolang het certificaat wordt vertrouwd; voor localhost- of LAN-adressen vraagt Chrome ook hier eerst om toegang tot het lokale netwerk.
Waarom kan ik vanaf deze pagina geen verbinding maken met ws://example.com?
Deze pagina wordt via HTTPS geserveerd, en browsers blokkeren vanaf een HTTPS-pagina een onversleutelde ws://-verbinding naar een openbare host (mixed content). Chrome en Firefox weigeren meteen met een SecurityError, die de tool meldt. Gebruik het wss://-adres van de server. Voor openbare sites die via gewoon http worden geserveerd geldt deze regel niet, maar in recente versies van Chrome kunnen die localhost of je LAN helemaal niet bereiken.
De verbinding mislukte met code 1006 — wat ging er mis?
1006 betekent alleen dat de verbinding eindigde zonder closing handshake. Als een handshake mislukt, verplicht de WebSocket-standaard de browser om de oorzaak voor de pagina te verbergen — een 401, een 404, een geweigerde poort, een certificaatfout en een afgewezen Origin zien er allemaal hetzelfde uit (Firefox meldt certificaatfouten als 1015) — dus geen enkele webtester die rechtstreeks vanuit de browser verbinding maakt, kan die tonen. Druk op F12 en open de Console: Chrome en Edge tonen de HTTP-status die de server teruggaf. De tool maakt ook onderscheid tussen fouten voordat de verbinding openging en onderbrekingen daarna, en geeft voor beide de gebruikelijke oorzaken.
Kan ik een Authorization-header of een andere eigen header toevoegen?
Nee. Met de WebSocket-API van de browser kunnen webpagina's geen requestheaders instellen; de browser stuurt een vaste set mee (waaronder Origin en cookies voor de eigen site van de server). Gangbare alternatieven, afhankelijk van wat je server ondersteunt: een token in de URL, zoals wss://host/ws?token=…; een token als subprotocol (alleen tokentekens zijn toegestaan, dus JWT werkt, maar standaard-Base64 met = of / niet, en de server moet het subprotocol terugsturen); of een cookie, dat browsers alleen betrouwbaar naar de eigen site van de pagina sturen, waardoor het vanaf deze pagina je server meestal niet bereikt. Tools zoals Postman kunnen wel headers instellen, omdat het geen browsers zijn.
Waarom werkt het in Postman wel en hier niet?
Postman en commandoregelclients kunnen elke header instellen en sturen meestal geen Origin mee. Een browser kan geen Authorization-header toevoegen en stuurt altijd Origin: https://go-tools.org mee. Heeft de server een token in een header nodig of controleert hij Origin, dan weigert hij de handshake van de browser; sta de Origin toe of geef het token op een andere manier mee.
Verstuurt de heartbeat WebSocket-ping-frames?
Nee. Webpagina's kunnen ping/pong-frames op protocolniveau niet versturen en niet zien; als de server een ping stuurt, antwoordt de browser zelf met een pong. Periodiek versturen stuurt hier een gewoon tekstbericht, zoals {"type":"ping"}, met het interval dat je instelt. Het staat standaard uit, omdat een server die dat bericht niet verwacht de verbinding kan sluiten. Laat de server pings versturen om een inactieve verbinding via een proxy open te houden.
Waarom kan ik geen verbinding maken met mijn Socket.IO-server?
Socket.IO is een protocol bovenop WebSocket, geen kale WebSocket. Een Socket.IO v3/v4-server verwacht het pad /socket.io/?EIO=4&transport=websocket, stuurt een open-pakket dat met 0 begint, verwacht 40 om de standaard-namespace te betreden en sluit de verbinding als niet elke ping 2 met pong 3 wordt beantwoord. Kies de Socket.IO-preset en de tool doet dit allemaal; verstuur daarna events als 42["event","data"]. Servers die alleen voor HTTP-long-polling zijn ingesteld, accepteren helemaal geen WebSocket.
Mijn verbinding valt na ongeveer een minuut weg — waarom?
Meestal is dat een idle-time-out in een reverse proxy. Nginx sluit een doorgestuurde verbinding standaard als er 60 seconden geen data passeert (proxy_read_timeout), en de pagina ziet code 1006. Verhoog de time-out of laat de server ping-frames versturen. Controleer achter Nginx ook of de proxy de upgrade doorstuurt met proxy_set_header Upgrade $http_upgrade; en proxy_set_header Connection "upgrade"; (vóór Nginx 1.29.7 ook proxy_http_version 1.1;).
Hoe maak ik verbinding met een wss://-server met een zelfondertekend certificaat?
Open https://dezelfde-host:poort/ in een nieuw tabblad, accepteer de certificaatwaarschuwing, kom dan terug en maak verbinding. De browser onthoudt de uitzondering voor die host en poort. Doe dit alleen voor je eigen testservers, want het verlaagt de bescherming van de browser.
Hoe verstuur en lees ik binaire berichten?
Kies HEX of Base64 als verzendformaat. HEX accepteert 48 69 00 FF, 0x48,0x69 of 486900FF; het voorbeeld toont de bytes, en ongeldige tekens of een oneven aantal cijfers worden gemeld met hun positie in plaats van verstuurd. Ontvangen binaire berichten worden getoond als HEX, 16 bytes per regel, en de werkbalk van de log schakelt ze om naar Base64. Om ontvangen HEX als tekst te lezen, plak je het in Hex naar tekst.
Gaan mijn berichten via servers van go-tools?
Nee. Je browser maakt rechtstreeks verbinding met het adres dat je invoert, en berichten gaan niet via onze servers. De tool opent ook geen WebSocket-verbinding totdat je op Verbinden klikt, en bewaart adres en berichten alleen in het geheugen — niet in de URL van de pagina en niet in de browseropslag. Net als de rest van de site laadt deze pagina analyse- en advertentiescripts.
Is er een server waartegen ik kan testen?
Gebruik de lokale echo: die draait binnen deze pagina, stuurt alles terug wat je verstuurt en maakt geen netwerkverbinding. Er bestaan ook openbare echodiensten zoals wss://echo.websocket.org/, maar die zijn van derden: de beschikbaarheid is niet gegarandeerd, en je berichten gaan naar die derde partij.

Gerelateerde tools

Alle tools bekijken →