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.