Testeur WebSocket : connecter, envoyer et journaliser les trames en ligne | We.Inc
Testeur WebSocket gratuit en ligne. Ouvrez une connexion ws:// ou wss:// depuis votre navigateur, envoyez du texte ou du JSON, suivez chaque message et lisez le code de fermeture à la fin.
Testeur WebSocket
Collez une adresse wss:// ou ws://, appuyez sur Connecter et ce testeur ouvre un vrai WebSocket depuis votre propre navigateur. Tapez un message, envoyez-le, et chaque trame sortante et entrante arrive dans un journal horodaté. Quand le socket se termine, vous voyez le code de fermeture, la raison et si la négociation de fermeture s'est terminée proprement.
Signification de chaque valeur de readyState
Valeur
Constante
Signification
CONNECTING
Créé, négociation pas encore terminée
OPEN
Prêt : send() fonctionne maintenant
CLOSING
La négociation de fermeture a commencé
CLOSED
Fermé, ou la connexion ne s'est jamais ouverte
Rien ici ne passe par nos serveurs. La connexion est ouverte par l'objet WebSocket intégré à l'onglet du navigateur dans lequel vous lisez cette page, donc le serveur voit votre navigateur, votre adresse IP et l'origine de cette page, https://we.inc. Un serveur qui vérifie l'en-tête Origin peut la refuser. Comme cette page est servie en https, préférez une adresse wss:// ; une simple adresse ws:// peut être bloquée par le navigateur comme non sécurisée.
Saisissez l'adresse du serveur. Elle doit commencer par ws://, wss://, http:// ou https:// et ne peut pas contenir de fragment #.
Ajoutez des sous-protocoles si le serveur en attend, séparés par des virgules, puis appuyez sur Connecter.
Écrivez un message et appuyez sur Envoyer, ou sur Ctrl+Enter dans le champ. Cochez l'option JSON pour vérifier que le texte est analysable avant son envoi.
Lisez le journal : les flèches indiquent le sens, et l'entrée de fermeture affiche le code, la raison et l'indicateur wasClean.
Appuyez sur Fermer pour terminer la session avec votre propre code (1000, ou toute valeur de 3000 à 4999) et une courte raison.
Fermé immédiatement avec 1006 et sans raison ? La négociation a échoué avant qu'aucune trame ne circule. Vérifiez l'adresse, le port, TLS et si le serveur rejette les origines étrangères.
Les navigateurs cachent volontairement les détails de la négociation aux scripts, donc l'événement error ne dit jamais pourquoi. Ouvrez le panneau Réseau des outils de développement et filtrez sur WS pour voir le statut HTTP de l'upgrade.
Les navigateurs considèrent localhost et 127.0.0.1 comme des adresses de confiance, donc ws://localhost:PORT est le moyen le plus simple de tester un serveur qui tourne sur votre propre machine.
Les trames binaires arrivent par défaut sous forme d'objets Blob. Ce testeur affiche leur taille en octets plutôt que d'essayer de les imprimer.
Gardez des raisons de fermeture courtes : le navigateur lève une SyntaxError si la raison dépasse 123 octets une fois encodée en UTF-8.
Questions fréquentes
Pourquoi ma connexion échoue-t-elle ici alors qu'elle fonctionne dans mon application ?
La cause habituelle est une vérification d'origine. Votre application se connecte depuis sa propre origine, alors que cette page se connecte depuis https://we.inc. Si le serveur n'accepte que des origines listées, il rejette la négociation et le navigateur signale le code de fermeture 1006. L'autre chose à essayer est la forme wss:// de l'adresse, puisque cette page est elle-même servie en https.
Mes données sont-elles envoyées à We.Inc ?
Non. La page se contente de créer un socket dans votre onglet et d'écrire dans un journal en mémoire. Les messages vont directement de votre navigateur au serveur que vous avez saisi. Recharger la page efface le journal.
Puis-je définir des en-têtes personnalisés comme Authorization ?
Pas depuis un navigateur. Le constructeur WebSocket ne prend qu'une URL et une liste optionnelle de sous-protocoles. Les serveurs qui ont besoin d'un jeton le lisent généralement dans la query string, un cookie ou le premier message après l'ouverture de la connexion.
Pourquoi ne puis-je pas envoyer de ping depuis cet outil ?
L'interface WebSocket du navigateur n'a que send() et close() comme méthodes. Ping et pong sont des trames de contrôle auxquelles le navigateur répond de lui-même quand un serveur le pingue, donc les scripts de la page ne les voient jamais. Envoyez un message texte normal si votre serveur utilise un heartbeat au niveau applicatif.
Quels codes de fermeture puis-je envoyer ?
Les scripts ne peuvent passer à close() que 1000 ou un code de 3000 à 4999. Tout autre nombre lève une InvalidAccessError. Les codes de la plage 1001 à 1015 sont définis par les navigateurs et les serveurs eux-mêmes.
Ce qui se passe quand vous appuyez sur Connecter
Le navigateur envoie une requête HTTP ordinaire portant Upgrade: websocket, une Sec-WebSocket-Key aléatoire et un en-tête Origin. Un serveur consentant répond avec le statut 101 Switching Protocols et une valeur Sec-WebSocket-Accept dérivée de cette clé. Dès lors, la même connexion TCP transporte des trames dans les deux sens.
Chaque tentative se termine soit par un événement open, soit par un événement close. Si vous voyez close sans open, l'upgrade n'a jamais réussi, ce qui limite la panne à l'adresse, au réseau ou aux règles de négociation du serveur.
Lire l'événement close
L'entrée de fermeture du journal contient trois éléments. code est le nombre du tableau ci-dessous. reason est le texte éventuel envoyé par l'autre côté, souvent vide. wasClean ne vaut true que lorsque les deux côtés ont échangé des trames de fermeture, donc false signifie généralement que le réseau a coupé ou que le serveur a planté.
Codes de fermeture WebSocket
La plage 1000 à 1015 est définie pour le protocole lui-même. La plage 3000 à 3999 est enregistrée auprès de l'IANA pour les bibliothèques et les frameworks, et 4000 à 4999 est libre pour un usage privé entre votre propre client et votre serveur.
Codes de fermeture et ce qu'ils vous apprennent
Code
Nom
Ce que cela signifie généralement
Fermeture normale
Le travail est terminé et le socket a été fermé volontairement
Départ
Le serveur s'arrête ou la page a été quittée
Erreur de protocole
Un côté a enfreint les règles de tramage
Données non prises en charge
Des données d'un type que le point de terminaison ne peut pas accepter, comme du binaire envoyé à un serveur texte uniquement
Aucun statut reçu
Réservé : une trame de fermeture est arrivée sans code
Fermeture anormale
Réservé : aucune trame de fermeture, souvent une négociation échouée ou une coupure réseau
Données de trame invalides
Un message contenait des données incohérentes, par exemple du texte qui n'est pas en UTF-8
Violation de politique
Un refus générique quand 1003 et 1009 ne conviennent pas
Message trop gros
Une trame dépassait la taille acceptée par le point de terminaison
Extension obligatoire
Le client voulait une extension que le serveur n'a pas acceptée
Erreur interne
Le serveur a rencontré une condition inattendue
Redémarrage du service
Le serveur redémarre
Réessayer plus tard
Une condition temporaire comme une surcharge
Mauvaise passerelle
Un proxy a reçu une réponse invalide du serveur en amont
Négociation TLS
Réservé : la négociation TLS a échoué, par exemple à cause d'un certificat non fiable
3000 à 3999
Enregistrés
Définis par les bibliothèques et les frameworks
4000 à 4999
Usage privé
Ce dont votre client et votre serveur conviennent
Le même client en quelques lignes de JavaScript
Client navigateur minimal
C'est ce que fait le testeur en coulisses : ouvrir, journaliser chaque message et signaler le code de fermeture.
Sous-protocoles (optionnels, séparés par des virgules)
Connecter
Fermer
Code de fermeture
Raison de la fermeture
Message
Envoyer
Ctrl+Enter pour envoyer
Vérifier que le message est un JSON valide
Effacer le journal
État : {v}
Journal des trames
Rien pour l'instant. Connectez-vous à un serveur pour démarrer le journal.
Connecté. Sous-protocole choisi par le serveur : {v}
Fermé avec le code {n}, raison « {v} », wasClean {c}
Événement error : le navigateur ne dit pas pourquoi. Consultez le panneau Réseau.