HTTP/3-Unterstützung
Salvo bietet Unterstützung für HTTP/3, die über das Feature quinn aktiviert werden kann. HTTP/3 basiert auf dem QUIC-Protokoll und bietet im Vergleich zu herkömmlichem HTTP/1.1 und HTTP/2 geringere Latenz und bessere Leistung, insbesondere in instabilen Netzwerkumgebungen.
Aktivierung der HTTP/3-Unterstützung
Um HTTP/3-Unterstützung in Salvo zu aktivieren, müssen Sie das Feature quinn in Ihrer Cargo.toml-Datei aktivieren:
Anwendungsfälle für HTTP/3
HTTP/3 ist besonders geeignet für folgende Szenarien:
- Anwendungen auf Mobilgeräten und in instabilen Netzwerkumgebungen
- Echtzeitanwendungen mit geringen Latenzanforderungen
- Szenarien mit parallelen Downloads zahlreicher kleiner Dateien
- Anwendungen, die Verbindungsmigration benötigen (z.B. nahtloses Wechseln von WLAN zu Mobilfunknetzen ohne Verbindungsunterbrechung)
Beispielcode
Hier ist ein einfaches HTTP/3-Serverbeispiel, das sowohl HTTP/3 (QUIC) als auch HTTPS (TCP) unterstützt:
Wichtige Code-Analyse
TLS-Konfiguration
Da HTTP/3 auf dem QUIC-Protokoll basiert, das TLS 1.3 für die Verschlüsselung benötigt, müssen TLS-Zertifikate und -Schlüssel konfiguriert werden. In Salvo verwenden wir RustlsConfig für die TLS-Konfiguration.
Kombinieren von Listenern
Dieser Code ist der Kern der HTTP/3-Verarbeitung in Salvo. Zuerst wird ein TLS-fähiger TCP-Listener (für HTTP/1.1 und HTTP/2) erstellt, dann ein QUIC-Listener (für HTTP/3). Die join-Methode kombiniert diese beiden Listener, sodass der Server Anfragen von verschiedenen Protokollen gleichzeitig verarbeiten kann.
Ausführung des Beispiels
Um dieses Beispiel auszuführen, benötigen Sie gültige TLS-Zertifikate und private Schlüssel. In einer Entwicklungsumgebung können selbstsignierte Zertifikate verwendet werden. Den vollständigen Beispielcode finden Sie im Salvo GitHub-Repository.
Beachten Sie, dass viele Clients HTTP/3 noch nicht vollständig unterstützen, weshalb dieser Server sowohl HTTP/3 als auch HTTPS unterstützen muss.
Wichtige Hinweise
- HTTP/3 erfordert TLS 1.3-Unterstützung, daher müssen gültige Zertifikate und Schlüssel konfiguriert werden.
- Clients müssen das HTTP/3-Protokoll unterstützen, um diese Funktion nutzen zu können; andernfalls greifen sie auf HTTP/1.1 oder HTTP/2 zurück.
- In Produktionsumgebungen sollten Zertifikate einer vertrauenswürdigen Zertifizierungsstelle (CA) verwendet werden, anstatt selbstsignierter Zertifikate.