Sobes.tech
Junior

À quoi servent les sockets en développement web?

sobes.tech IA

Réponse de l'IA

Pour l’échange bidirectionnel de données entre le client (navigateur) et le serveur en temps réel. Contrairement au HTTP traditionnel, où le client initie la requête et le serveur répond, les sockets permettent au serveur d’envoyer des données au client à tout moment sans requête préalable.

Exemples d’utilisation :

  • Applications de chat : Livraison instantanée de messages entre utilisateurs.
  • Jeux en ligne : Synchronisation des états des joueurs et du monde du jeu en temps réel.
  • Plateformes de trading : Mise à jour des cotations d’actions ou de cryptomonnaies sans recharger la page.
  • Notifications : Envoi de notifications push aux utilisateurs lors du changement de statut d’une commande, d’un nouveau message, etc.
  • Édition collaborative de documents : Synchronisation des modifications entre plusieurs utilisateurs.

Les sockets sont implémentés sur le protocole TCP et utilisent généralement le protocole WebSocket, qui assure une connexion permanente entre le client et le serveur après la poignée de main HTTP initiale.

// Exemple de code client pour établir une connexion WebSocket
const ws = new WebSocket('ws://localhost:8080'); // Adresse du serveur WebSocket

ws.onopen = () => {
  // Connexion établie
  console.log('Connexion WebSocket établie');
  ws.send('Bonjour, serveur!'); // Envoi d’un message au serveur
};

ws.onmessage = (event) => {
  // Message reçu du serveur
  console.log('Message reçu du serveur:', event.data);
};

ws.onclose = (event) => {
  // Connexion fermée
  if (event.wasClean) {
    console.log(`Connexion fermée proprement, code=${event.code} raison=${event.reason}`);
  } else {
    console.error('Connexion interrompue');
  }
};

ws.onerror = (error) => {
  // Erreur lors de la connexion
  console.error('Erreur WebSocket:', error);
};

La connexion WebSocket a de faibles coûts de surcharge par rapport aux requêtes HTTP constantes (sondage ou long sondage), ce qui la rend plus efficace pour les applications nécessitant un échange fréquent de données en temps réel.