Les bases de WebSocket
Communications bidirectionnelles en temps réel
Les bases de WebSocket est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Communication bidirectionnelle en temps réel
HTTP fonctionne selon un modèle requête-réponse : le client demande, le serveur répond, puis la connexion se termine (logiquement). Pour les discussions, les tableaux de bord en direct et les jeux, vous avez besoin d’un canal persistant bidirectionnel. C’est ce que fournissent les WebSockets.
La négociation de mise à niveau
Une connexion WebSocket commence comme une requête HTTP normale avec des en-têtes spéciaux :
Upgrade: websocketConnection: Upgrade
Le serveur répond 101 Switching Protocols, puis le socket TCP est réutilisé pour des trames en duplex intégral.
Pourquoi ne pas utiliser de simples interrogations périodiques
Avant les WebSockets, les applications utilisaient des interrogations périodiques (des requêtes répétées) ou des interrogations longues. Les deux solutions gaspillent de la bande passante et ajoutent de la latence. Les WebSockets maintiennent une connexion ouverte unique, de sorte que chaque partie peut envoyer des données instantanément.
Des trames, pas des requêtes
Une fois la mise à niveau effectuée, les données circulent sous forme de trames légères plutôt que de messages HTTP. Les trames peuvent contenir du texte ou des données binaires, et il existe des trames de contrôle pour ping/pong et la fermeture.
Duplex intégral
Contrairement à HTTP, les deux pairs peuvent envoyer des données à tout moment sans attendre de réponse. Un serveur peut transmettre une notification dès qu’un élément change, tandis que le client peut envoyer des données en parallèle.
ws contre wss
Comme http/https, les WebSockets disposent de deux schémas :
ws://en texte clairwss://via TLS (à utiliser en production)
Prise en charge par la bibliothèque standard
La bibliothèque standard de Go ne propose aucune implémentation de WebSocket dans net/http à elle seule. La communauté utilise github.com/gorilla/websocket ou nhooyr.io/websocket. Nous présenterons gorilla dans la leçon suivante.
import "github.com/gorilla/websocket"Un modèle mental
Imaginez un WebSocket comme un appel téléphonique :
- Composer le numéro = la négociation de mise à niveau HTTP
- La ligne ouverte = la connexion persistante
- Parler dans les deux sens = des trames en duplex intégral
- Raccrocher = la trame de fermeture
Types de messages
Deux types de trames de données sont particulièrement importants :
- Texte : les trames contiennent de l'UTF-8, souvent du JSON
- Binaire : les trames contiennent des octets bruts, comme du protobuf ou des images
Les trames de contrôle (ping, pong, fermeture) gèrent la connexion elle-même.
Quand les WebSockets sont particulièrement utiles
Ils conviennent parfaitement aux cas suivants :
- Conversation et présence
- Trading ou scores sportifs en direct
- Édition collaborative
- État d'un jeu multijoueur
Pour une communication à sens unique, du serveur vers le client uniquement, les événements envoyés par le serveur peuvent être plus simples.
Exécutable : représenter l'idée
Le code WebSocket nécessite une bibliothèque externe ; voici donc une analogie utilisant la bibliothèque standard : une fonction qui classe un message comme texte ou binaire afin d'illustrer les types de trames.
package main
import (
"fmt"
"unicode/utf8"
)
func frameType(data []byte) string {
if utf8.Valid(data) {
return "text"
}
return "binary"
}
func main() {
fmt.Println(frameType([]byte("hello")))
fmt.Println(frameType([]byte{0xff, 0x00, 0x01}))
}Vérification rapide
Vérifiez votre compréhension des notions fondamentales de WebSocket.
Récapitulatif
Vous avez découvert les fondamentaux de WebSocket :
- Ils fournissent une communication persistante en duplex intégral
- Ils commencent par une négociation de mise à niveau HTTP, avec une réponse 101
- Les données circulent sous forme de trames texte ou binaires ; les trames de contrôle gèrent la liaison
- Utilisez
wss://en production ; Go s'appuie sur des bibliothèques comme gorilla/websocket
Questions Fréquemment Posées
La leçon « Les bases de WebSocket » est-elle gratuite ?
Oui — le texte complet de « Les bases de WebSocket » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Les bases de WebSocket » ?
Communications bidirectionnelles en temps réel Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Les bases de WebSocket » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les bases de WebSocket
- Utiliser gorilla/websocket
- Diffuser des messages
- Gestion des connexions