Sobes.tech
Junior

A cosa servono i socket nello sviluppo web?

sobes.tech AI

Risposta dell'AI

Per lo scambio bidirezionale di dati tra client (browser) e server in tempo reale. A differenza dell'HTTP tradizionale, in cui il client avvia la richiesta e il server risponde, i socket consentono al server di inviare dati al client in qualsiasi momento senza una richiesta preliminare.

Esempi di utilizzo:

  • Applicazioni di chat: Consegna istantanea di messaggi tra utenti.
  • Giochi online: Sincronizzazione degli stati dei giocatori e del mondo di gioco in tempo reale.
  • Piattaforme di trading: Aggiornamento delle quotazioni di azioni o criptovalute senza ricaricare la pagina.
  • Notifiche: Invio di notifiche push agli utenti in caso di modifica dello stato dell'ordine, nuovo messaggio, ecc.
  • Modifica collaborativa di documenti: Sincronizzazione delle modifiche tra più utenti.

I socket sono implementati sul protocollo TCP e generalmente utilizzano il protocollo WebSocket, che garantisce una connessione costante tra client e server dopo il primo handshake HTTP.

// Esempio di codice client per stabilire una connessione WebSocket
const ws = new WebSocket('ws://localhost:8080'); // Indirizzo del server WebSocket

ws.onopen = () => {
  // Connessione stabilita
  console.log('Connessione WebSocket stabilita');
  ws.send('Ciao, server!'); // Invio di un messaggio al server
};

ws.onmessage = (event) => {
  // Messaggio ricevuto dal server
  console.log('Messaggio dal server:', event.data);
};

ws.onclose = (event) => {
  // Connessione chiusa
  if (event.wasClean) {
    console.log(`Connessione chiusa correttamente, codice=${event.code} motivo=${event.reason}`);
  } else {
    console.error('Connessione interrotta');
  }
};

ws.onerror = (error) => {
  // Errore durante l'uso della connessione
  console.error('Errore WebSocket:', error);
};

La connessione WebSocket ha bassi costi di overhead rispetto alle richieste HTTP costanti (polling o long polling), rendendola più efficiente per le applicazioni che richiedono uno scambio frequente di dati in tempo reale.