Sobes.tech
Junior — Middle

Puoi spiegare il principio di funzionamento del protocollo WebSocket e come garantisce una connessione costante tra server e client?

sobes.tech AI

Risposta dell'AI

WebSocket è un protocollo che garantisce una connessione bidirezionale persistente tra client e server su TCP. A differenza dell'HTTP classico, dove il richiesta viene iniziata dal client, WebSocket permette al server di inviare dati al client in qualsiasi momento.

Principio di funzionamento:

  1. Il client avvia una richiesta HTTP con l'intestazione Upgrade: websocket per passare al protocollo WebSocket.
  2. Il server conferma il passaggio e viene stabilita una connessione persistente.
  3. Dopo aver stabilito la connessione, client e server possono scambiarsi messaggi in tempo reale senza necessità di richieste HTTP ripetute.

Questo permette di creare applicazioni a bassa latenza, come chat, giochi, terminali finanziari.

Esempio di utilizzo di WebSocket in iOS (Swift):

import Foundation

let url = URL(string: "wss://example.com/socket")!
let webSocketTask = URLSession.shared.webSocketTask(with: url)

webSocketTask.resume()

// Inviare un messaggio
let message = URLSessionWebSocketTask.Message.string("Ciao server!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Errore di invio: \(error)")
    }
}

// Ricevere messaggi
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Errore di ricezione: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Messaggio ricevuto: \(text)")
            default:
                break
            }
            receive() // continuare ad ascoltare
        }
    }
}

receive()

In questo modo, WebSocket garantisce una connessione efficiente e persistente per lo scambio di dati in tempo reale.