Supporto per HTTP/3
Salvo fornisce supporto per HTTP/3, che può essere abilitato tramite la feature quinn. HTTP/3 si basa sul protocollo QUIC e offre latenza ridotta e prestazioni migliori rispetto ai tradizionali HTTP/1.1 e HTTP/2, specialmente in ambienti di rete instabili.
Abilitazione del Supporto HTTP/3
Per abilitare il supporto HTTP/3 in Salvo, è necessario attivare la feature quinn nel file Cargo.toml:
Casi d'Uso di HTTP/3
HTTP/3 è particolarmente adatto per i seguenti scenari:
- Applicazioni su dispositivi mobili e in ambienti di rete instabili
- Applicazioni in tempo reale che richiedono bassa latenza
- Scenari che coinvolgono download paralleli di numerosi file di piccole dimensioni
- Applicazioni che necessitano di migrazione di connessione (ad esempio, passaggio senza interruzioni da WiFi a reti cellulari)
Codice di Esempio
Di seguito è riportato un semplice esempio di server HTTP/3 che supporta sia HTTP/3 (QUIC) che HTTPS (TCP):
Analisi del Codice Chiave
Configurazione TLS
Poiché HTTP/3 si basa sul protocollo QUIC, che richiede TLS 1.3 per la cifratura, è necessario configurare certificati e chiavi TLS. In Salvo, utilizziamo RustlsConfig per configurare TLS.
Combinazione dei Listener
Questo codice rappresenta la parte centrale della gestione di HTTP/3 in Salvo. Prima crea un listener TCP abilitato TLS (per HTTP/1.1 e HTTP/2), poi crea un listener QUIC (per HTTP/3). Il metodo join combina questi due listener, consentendo al server di gestire contemporaneamente richieste da protocolli diversi.
Esecuzione dell'Esempio
Per eseguire questo esempio, sono necessari certificati TLS e chiavi private validi. In un ambiente di sviluppo, è possibile utilizzare certificati autofirmati. Il codice completo dell'esempio è disponibile nel repository GitHub di Salvo.
Si noti che poiché molti client non supportano ancora completamente HTTP/3, è essenziale che questo server supporti sia HTTP/3 che HTTPS.
Considerazioni
- HTTP/3 richiede il supporto di TLS 1.3, quindi è necessario configurare certificati e chiavi validi.
- I client devono supportare il protocollo HTTP/3 per utilizzare questa funzionalità; altrimenti, ricadranno su HTTP/1.1 o HTTP/2.
- In ambienti di produzione, è consigliabile utilizzare certificati emessi da un'Autorità di Certificazione (CA) attendibile anziché certificati autofirmati.