0Pricing
Go Academy · Lezione

Nozioni di base su WebSocket

Comunicazioni bidirezionali in tempo reale

Nozioni di base su WebSocket è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Comunicazione bidirezionale in tempo reale

HTTP segue il modello richiesta-risposta: il client invia una richiesta, il server risponde e la connessione, logicamente, termina. Per chat, dashboard in tempo reale e giochi serve un canale persistente e bidirezionale. È questo ciò che offrono i WebSocket.

L'handshake di upgrade

Una connessione WebSocket inizia come una normale richiesta HTTP con intestazioni speciali:

  • Upgrade: websocket
  • Connection: Upgrade

Il server risponde 101 Switching Protocols e il socket TCP viene riutilizzato per frame full-duplex.

Perché non usare semplicemente il polling

Prima dei WebSocket, le applicazioni usavano il polling, cioè richieste ripetute, oppure il long polling. Entrambi sprecano banda e aggiungono latenza. I WebSocket mantengono aperta un'unica connessione, così entrambe le parti possono inviare dati immediatamente.

Frame, non richieste

Dopo l'upgrade, i dati viaggiano come leggeri frame anziché come messaggi HTTP. I frame possono essere testuali o binari e sono disponibili frame di controllo per ping/pong e chiusura.

Full duplex

A differenza di HTTP, entrambi i peer possono inviare dati in qualsiasi momento senza attendere una risposta. Un server può inviare una notifica non appena qualcosa cambia e il client può inviare input contemporaneamente.

ws vs wss

Come http/https, i WebSocket hanno due schemi:

  • ws:// in testo non cifrato
  • wss:// tramite TLS, da usare in produzione

Supporto della libreria standard

La libreria standard di Go non include un'implementazione WebSocket nel solo net/http. La comunità utilizza github.com/gorilla/websocket oppure nhooyr.io/websocket. Nella prossima lezione verrà illustrato gorilla.

import "github.com/gorilla/websocket"

Un modello mentale

Si consideri un WebSocket come una telefonata:

  • Comporre il numero = l'handshake di upgrade HTTP
  • La linea aperta = la connessione persistente
  • Parlare in entrambe le direzioni = frame full-duplex
  • Riagganciare = il frame di chiusura

Tipi di messaggio

Esistono due tipi di frame dati particolarmente importanti:

  • Testo: trasportano UTF-8 (spesso JSON)
  • Binari: trasportano byte grezzi (protobuf, immagini)

I frame di controllo (ping, pong, close) gestiscono la connessione stessa.

Dove gli WebSocket danno il meglio

Sono particolarmente adatti per:

  • Chat e presenza
  • Trading o risultati sportivi in tempo reale
  • Modifica collaborativa
  • Stato di gioco multiplayer

Per una comunicazione esclusivamente unidirezionale dal server al client, Server-Sent Events può essere una soluzione più semplice.

Eseguibile: l'idea dei frame

Il codice WebSocket richiede una libreria esterna, quindi ecco un'analogia basata sulla libreria standard: una funzione che classifica un messaggio come testuale o binario, illustrando i tipi di frame.

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}))
}

Verifica rapida

Verifichi la propria comprensione dei concetti fondamentali dei WebSocket.

Riepilogo

Ha appreso i fondamenti dei WebSocket:

  • Forniscono una comunicazione persistente e full-duplex
  • Iniziano con un handshake di upgrade HTTP (risposta 101)
  • I dati fluiscono in frame testuali o binari; i frame di controllo gestiscono il collegamento
  • In produzione utilizzi wss://; Go si affida a librerie come gorilla/websocket

Domande Frequenti

La lezione «Nozioni di base su WebSocket» è gratuita?

Sì — il testo completo di «Nozioni di base su WebSocket» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Nozioni di base su WebSocket»?

Comunicazioni bidirezionali in tempo reale Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Nozioni di base su WebSocket»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Nozioni di base su WebSocket
  2. Usare gorilla/websocket
  3. Trasmettere messaggi
  4. Gestione delle connessioni
← Torna a Go Academy