0Pricing
Go Academy · Leçon

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: websocket
  • Connection: 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 clair
  • wss:// 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

  1. Les bases de WebSocket
  2. Utiliser gorilla/websocket
  3. Diffuser des messages
  4. Gestion des connexions
← Retour à Go Academy