ToolActToolAct

Outil de Test WebSocket Online

Test de connexion WebSocket online, envoi et réception de messages outil de débogage

Déconnecté
Envoyés
0
Reçus
0
Durée
00:00
Total Messages
0
Journal des Messages

Connectez pour envoyer et recevoir des messages

Ctrl + Enter pour envoyer

Qu'est-ce que WebSocket?

Le test WebSocket se connecte à une URL WebSocket et aide à vérifier si un canal temps réel peut s’ouvrir, envoyer des messages et recevoir des réponses. Les WebSockets servent aux chats, tableaux de bord en direct, notifications, fonctions multijoueur, données de marché, communication d’appareils et autres connexions bidirectionnelles persistantes. L’outil est utile en développement, diagnostic, configuration proxy, contrôle TLS et comparaison entre endpoints ws:// et wss://. Ce n’est ni un test de charge ni un analyseur complet de protocole. Authentification, sous-protocoles, heartbeats, reconnexion, format des messages, backpressure et limites serveur doivent être testés dans le client et l’environnement réels.

Comment utiliser

Comment utiliser

  1. Saisissez l'adresse du serveur WebSocket dans le champ URL (ws:// ou wss://)
  2. Facultatif : saisissez les sous-protocoles, séparés par des virgules pour en spécifier plusieurs
  3. Cliquez sur « Connecter » pour établir la connexion WebSocket
  4. Saisissez le contenu du message dans le champ de saisie
  5. Sélectionnez le type de message (Texte ou JSON) ; le format JSON sera validé automatiquement
  6. Cliquez sur « Envoyer » ou appuyez sur Ctrl + Enter pour envoyer le message
  7. Consultez les messages envoyés et reçus dans la liste ; cliquez pour copier

Conseils de connexion

  • Utilisez wss:// lors des tests depuis une page HTTPS ; les navigateurs bloquent souvent les connexions ws:// non sécurisées depuis des origines sécurisées.
  • Exportez ou copiez les journaux de messages importants avant de vous déconnecter, d'actualiser ou de changer de point de terminaison pendant le débogage.

Cas d’utilisation

Se connecter manuellement à des endpoints WebSocketSaisissez une URL ws:// ou wss://, fournissez optionnellement des sous-protocoles séparés par des virgules, et ouvrez une connexion WebSocket navigateur. Seules l’URL et les sous-protocoles saisis sont utilisés ; le navigateur ouvre une seule connexion vers cet endpoint. La barre de statut distingue les états déconnecté, connexion en cours, connecté et erreur avec les détails du code de fermeture lorsque disponibles.
Envoyer et inspecter des messages texte ou JSONComposez des messages texte ou JSON, validez le JSON avant envoi en mode JSON, et envoyez avec Ctrl ou Command plus Entrée. Les messages envoyés et reçus sont horodatés, dimensionnés en octets, étiquetés comme JSON lorsque analysables, et affichés avec mise en forme JSON quand possible.
Exporter une transcription de session WebSocketLe journal conserve jusqu’à 500 entrées, suit les compteurs envoyés/reçus et la durée de connexion, et peut être exporté en fichier JSON. Les messages individuels peuvent aussi être copiés pour le débogage de conversations API ou de flux d’événements temps réel.
Tester la négociation de sous-protocolesListez des sous-protocoles séparés par des virgules (par ex. ‘graphql-ws,soap,wamp’) avant de vous connecter. Le handshake renverra la valeur sélectionnée par le serveur dans l’en-tête de réponse Sec-WebSocket-Protocol, le moyen le plus rapide de vérifier si le client et la passerelle sont d’accord, ou si un proxy supprime la valeur demandée.
Observer les heartbeats et les timeouts d’inactivitéLaissez la connexion ouverte sans trafic et surveillez les trames ping non sollicitées ou la fermeture automatique. Comparez l’intervalle d’inactivité avec l’intervalle de heartbeat documenté du serveur pour confirmer que les paramètres keep-alive correspondent, et capturez le code de fermeture. En pratique, le proxy_read_timeout par défaut de NGINX est de 60 secondes et de nombreux load balancers cloud coupent les sockets inactives autour de 60 à 350 secondes.

Principe technique

Le cœur du protocole WebSocket repose sur le mécanisme HTTP Upgrade. Le client envoie d'abord une requête HTTP GET classique, mais avec les en-têtes Upgrade: websocket et Connection: Upgrade ainsi qu'une clé Sec-WebSocket-Key générée aléatoirement. Après validation de ces en-têtes, le serveur répond avec 101 Switching Protocols, incluant la valeur Sec-WebSocket-Accept, qui est le SHA-1 de la clé concaténée avec un GUID fixe, puis encodée en Base64. Après la réponse 101, la connexion TCP bascule d'HTTP vers WebSocket, et les données suivantes sont transmises sous forme de trames WebSocket. L'en-tête d'une trame WebSocket fait au minimum 2 octets, contenant le drapeau FIN, le code d'opération (0x1 pour le texte, 0x2 pour le binaire, 0x8 pour la fermeture, 0x9 pour le ping, 0xA pour le pong) et la longueur de la charge utile. Les trames ping/pong sont utilisées pour la détection de heartbeat ; l'API du navigateur ne les envoie pas automatiquement, c'est donc à la couche applicative de les implémenter. wss:// est l'équivalent de HTTPS+WebSocket, effectuant d'abord une poignée de main TLS puis la mise à niveau WebSocket ; ws:// est en clair, et le navigateur refusera les points de terminaison ws:// sur les pages https pour empêcher les attaques de rétrogradation. Une trame unique est limitée à environ 1 Mo par défaut ; les messages plus longs sont répartis sur plusieurs trames.

  • Poignée de main : le client envoie un HTTP GET avec l'en-tête Upgrade: websocket, et le serveur renvoie 101 Switching Protocols pour signaler une mise à niveau réussie
  • Sec-WebSocket-Key est une chaîne Base64 de 16 octets générée aléatoirement par le navigateur ; le serveur y concatène un GUID fixe, calcule le SHA-1 et vérifie via Sec-WebSocket-Accept
  • Framing : chaque trame transporte un en-tête d'au moins 2 octets, avec FIN, opcode (texte/binaire/ping/pong/fermeture) et la longueur de la charge utile
  • ws:// est en clair, wss:// est WebSocket sur HTTPS ; les navigateurs refusent ws:// sur les sites https pour empêcher les attaques de rétrogradation
  • Trames ping/pong pour les heartbeats : la RFC 6455 exige un pong en réponse à chaque ping ; le navigateur n'envoie pas automatiquement les heartbeats, l'application doit les implémenter
  • Séquence de fermeture : chaque côté envoie une trame de fermeture 0x8 avec un code de statut, le pair répond avec une trame de fermeture correspondante, et seulement alors la connexion TCP est réellement libérée

Exemples

Se connecter à un service Echo public

wss://echo.websocket.org — la poignée de main 101 Switching Protocols réussit, l'envoi de "hello" renvoie immédiatement "hello" en écho

Déboguer votre propre service WebSocket

wss://api.example.com/ws — sous-protocole graphql-ws, la connexion réussit, les messages d'abonnement sont reçus normalement

Reproduire une connexion interrompue

wss://api.example.com/ws — le serveur ferme activement la connexion 30 secondes après son établissement, code de fermeture 1006 (fermeture anormale)

FAQ

Que fait le testeur WebSocket ?

Il vous permet de vous connecter à n'importe quel endpoint ws:// ou wss://, d'envoyer et recevoir des messages, et d'inspecter l'échange protocolaire. Utile pour tester les API WebSocket, les brokers MQTT-over-WS, les serveurs de jeux temps réel, les systèmes de chat et les flux de cotations boursières en développement.

Les messages passent-ils par vos serveurs ?

Non. Le navigateur ouvre la connexion WebSocket directement vers l'hôte cible. Pas d'intermédiaire, pas de journalisation de notre côté. L'hôte cible voit votre IP comme n'importe quel autre client.

Pourquoi cela ne se connecte-t-il pas à mon endpoint localhost ?

Règles de contenu mixte : si cette page est servie en HTTPS, les navigateurs bloquent les connexions ws:// (non sécurisées). Utilisez wss:// pour la cible, ou exécutez cette page en HTTP simple pour les tests locaux. La console du navigateur affiche la raison exacte du rejet.

Puis-je envoyer des données binaires ?

Oui. La plupart des builds prennent en charge les trames texte et binaires. L'entrée binaire est généralement en Base64 ou hex ; la page la décode avant l'envoi. L'affichage des réponses binaires utilise hex ou Base64 par défaut.

Comment ajouter des en-têtes personnalisés ?

L'API WebSocket du navigateur n'autorise pas les en-têtes personnalisés — c'est une restriction de la plateforme web. Le seul en-tête que vous pouvez définir est Sec-WebSocket-Protocol (le sous-protocole). Pour l'authentification par jeton Bearer, utilisez un paramètre de requête ou une authentification au premier message ; certains serveurs acceptent un Cookie.

Va-t-il tester la compression et les extensions ?

Les navigateurs négocient automatiquement per-message-deflate avec les serveurs qui l'annoncent. La page affiche typiquement l'extension négociée. Les extensions personnalisées ne sont pas testées — les navigateurs n'exposent pas ce niveau de contrôle.

Pourquoi ma connexion se coupe-t-elle sans cesse ?

Causes courantes : timeout d'inactivité du serveur (souvent 30 à 120 s), timeout de proxy/load-balancer, interruption réseau, ou mise en veille de l'ordinateur. Les WebSockets modernes ont besoin de heartbeats ping/pong ; vérifiez que le serveur envoie des pings, ou faites envoyer à votre client des messages périodiques.