Puis-je tester ws://localhost ou un serveur du réseau local depuis cette page HTTPS ?
Cela dépend du navigateur (en octobre 2026). À partir de la version 147, Chrome traite les connexions WebSocket vers votre ordinateur ou votre réseau local comme un accès au réseau local : la première fois, il demande s'il faut autoriser ce site, et une fois que vous avez choisi Autoriser, ws://localhost, ws://127.0.0.1 et ws:// vers une adresse IP du réseau local comme 192.168.1.10 se connectent. Dans Chrome, le serveur du réseau local doit être écrit sous forme d'adresse IP ; un simple nom d'hôte (autre que .local) est bloqué même s'il résout vers votre réseau. Firefox se connecte directement à localhost mais bloque ws:// vers les adresses du réseau local. Safari bloque ws:// vers localhost et le réseau local depuis les pages HTTPS. wss:// n'est pas concerné par la règle du contenu mixte : les serveurs publics fonctionnent depuis cette page dans tous les navigateurs tant que le certificat est reconnu comme fiable ; pour localhost ou les adresses du réseau local, Chrome demande là aussi d'abord l'autorisation d'accès au réseau local.
Pourquoi ne puis-je pas me connecter à ws://example.com depuis cette page ?
Cette page est servie en HTTPS, et les navigateurs bloquent une connexion ws:// non chiffrée vers un hôte public depuis une page HTTPS (contenu mixte). Chrome et Firefox refusent immédiatement avec une SecurityError, que l'outil signale. Utilisez l'adresse wss:// du serveur. Les sites publics servis en http simple ne sont pas soumis à cette règle, mais dans les versions récentes de Chrome ils ne peuvent pas du tout joindre localhost ni votre réseau local.
La connexion a échoué avec le code 1006 — que s'est-il passé ?
1006 signifie seulement que la connexion s'est terminée sans handshake de fermeture. Quand un handshake échoue, la norme WebSocket impose au navigateur de cacher la cause à la page — un 401, un 404, un port refusé, une erreur de certificat et un Origin rejeté se ressemblent tous (Firefox signale les erreurs de certificat avec le code 1015) — donc aucun testeur web qui se connecte directement depuis le navigateur ne peut l'afficher. Appuyez sur F12 et ouvrez la console : Chrome et Edge affichent le statut HTTP renvoyé par le serveur. L'outil distingue aussi les échecs survenus avant l'ouverture de la connexion des coupures survenues après, et liste les causes habituelles de chacun.
Puis-je ajouter un en-tête Authorization ou un autre en-tête personnalisé ?
Non. L'API WebSocket du navigateur ne permet pas aux pages web de définir des en-têtes de requête ; le navigateur envoie un ensemble fixe (dont Origin et les cookies du site du serveur). Contournements courants, selon ce que votre serveur prend en charge : un jeton dans l'URL, comme wss://host/ws?token=… ; un jeton transmis comme sous-protocole (seuls les caractères de type token sont autorisés, donc un JWT fonctionne mais pas un Base64 standard contenant = ou /, et le serveur doit renvoyer le sous-protocole) ; ou un cookie, que les navigateurs n'envoient de façon fiable qu'au site de la page elle-même, si bien que depuis cette page il n'atteint généralement pas votre serveur. Des outils comme Postman peuvent définir des en-têtes parce que ce ne sont pas des navigateurs.
Pourquoi cela fonctionne-t-il dans Postman mais pas ici ?
Postman et les clients en ligne de commande peuvent définir n'importe quel en-tête et n'envoient généralement pas d'Origin. Un navigateur ne peut pas ajouter d'en-tête Authorization et envoie toujours Origin: https://go-tools.org. Si le serveur exige un jeton dans un en-tête ou vérifie l'Origin, il rejette le handshake du navigateur ; autorisez l'Origin ou transmettez le jeton autrement.
Le heartbeat envoie-t-il des trames ping WebSocket ?
Non. Les pages web ne peuvent ni envoyer ni voir les trames ping/pong du protocole ; quand le serveur envoie un ping, le navigateur répond lui-même par un pong. L'envoi périodique de cet outil envoie un message texte ordinaire, comme {"type":"ping"}, à l'intervalle que vous fixez. Il est désactivé par défaut, car un serveur qui n'attend pas ce message peut fermer la connexion. Pour maintenir une connexion inactive à travers un proxy, faites envoyer les pings par le serveur.
Pourquoi ne puis-je pas me connecter à mon serveur Socket.IO ?
Socket.IO est un protocole au-dessus de WebSocket, pas du WebSocket brut. Un serveur Socket.IO v3/v4 attend le chemin /socket.io/?EIO=4&transport=websocket, envoie un paquet d'ouverture commençant par 0, attend 40 pour rejoindre le namespace par défaut, et ferme la connexion si chaque ping 2 ne reçoit pas de pong 3. Choisissez le préréglage Socket.IO et l'outil fait tout cela ; envoyez ensuite les événements sous la forme 42["event","data"]. Les serveurs configurés uniquement pour le long-polling HTTP n'acceptent pas du tout de WebSocket.
Ma connexion tombe au bout d'environ une minute — pourquoi ?
Le plus souvent, c'est un délai d'inactivité dans un proxy inverse. Par défaut, Nginx ferme une connexion relayée quand aucune donnée ne passe pendant 60 secondes (proxy_read_timeout), et la page voit le code 1006. Augmentez ce délai ou faites envoyer des trames ping par le serveur. Derrière Nginx, vérifiez aussi que le proxy transmet l'upgrade avec proxy_set_header Upgrade $http_upgrade; et proxy_set_header Connection "upgrade"; (avant Nginx 1.29.7, ajoutez aussi proxy_http_version 1.1;).
Comment me connecter à un serveur wss:// avec un certificat auto-signé ?
Ouvrez https://le-meme-hote:port/ dans un nouvel onglet, acceptez l'avertissement de certificat, puis revenez et connectez-vous. Le navigateur mémorise l'exception pour cet hôte et ce port. Ne le faites que pour vos propres serveurs de test, car cela réduit la protection du navigateur.
Comment envoyer et lire des messages binaires ?
Choisissez HEX ou Base64 comme format d'envoi. Le HEX accepte 48 69 00 FF, 0x48,0x69 ou 486900FF ; l'aperçu montre les octets, et les caractères invalides ou un nombre impair de chiffres sont signalés avec leur position au lieu d'être envoyés. Les messages binaires reçus s'affichent en HEX, 16 octets par ligne, et la barre d'outils du journal permet de les basculer en Base64. Pour lire le HEX reçu sous forme de texte, collez-le dans Hexadécimal en texte. Mes messages passent-ils par les serveurs de go-tools ?
Non. Votre navigateur se connecte directement à l'adresse que vous saisissez, et les messages ne passent pas par nos serveurs. L'outil n'ouvre d'ailleurs aucune connexion WebSocket tant que vous n'avez pas cliqué sur Se connecter, et il ne garde l'adresse et les messages qu'en mémoire — ni dans l'URL de la page ni dans le stockage du navigateur. Comme le reste du site, cette page charge des scripts d'analyse d'audience et de publicité.
Existe-t-il un serveur sur lequel je puisse faire des tests ?
Utilisez l'écho local : il tourne dans cette page, renvoie tout ce que vous envoyez et n'établit aucune connexion réseau. Des services d'écho publics comme wss://echo.websocket.org/ existent aussi, mais ce sont des tiers : leur disponibilité n'est pas garantie, et vos messages sont transmis à ce tiers.