HTTP/3 サポート
Salvo は HTTP/3 のサポートを提供しており、quinn フィーチャーを有効にすることでこの機能を利用できます。HTTP/3 は QUIC プロトコルを基盤としており、従来の HTTP/1.1 や HTTP/2 と比較して、特に不安定なネットワーク環境において、より低いレイテンシと優れたパフォーマンスを実現します。
HTTP/3 サポートの有効化
Salvo で HTTP/3 サポートを有効にするには、Cargo.toml ファイルで quinn フィーチャーを有効化する必要があります:
HTTP/3 の適用シナリオ
HTTP/3 は特に以下のシナリオに適しています:
- モバイルデバイスや不安定なネットワーク環境でのアプリケーション
- 低遅延が求められるリアルタイムアプリケーション
- 多数の小規模ファイルを並行ダウンロードするシナリオ
- 接続マイグレーションが必要なアプリケーション(例:WiFi から携帯ネットワークへの切り替え時に接続を維持)
サンプルコード
以下は、HTTP/3 (QUIC) と HTTPS (TCP) の両方をサポートするシンプルな HTTP/3 サーバーの例です:
主要コードの解説
TLS 設定
HTTP/3 は QUIC プロトコルを基盤としており、QUIC は暗号化に TLS 1.3 を必要とするため、TLS 証明書と秘密鍵の設定が必要です。Salvo では、RustlsConfig を使用して TLS を設定します。
リスナーの結合
このコードは、Salvo で HTTP/3 を処理するための中心的な部分です。まず、TLS をサポートする TCP リスナー(HTTP/1.1 および HTTP/2 用)を作成し、次に QUIC リスナー(HTTP/3 用)を作成します。join メソッドを使用してこれら 2 つのリスナーを結合することで、サーバーは異なるプロトコルのリクエストを同時に処理できるようになります。
サンプルの実行
このサンプルを実行するには、有効な TLS 証明書と秘密鍵が必要です。開発環境では、自己署名証明書を使用できます。完全なサンプルコードは Salvo GitHub リポジトリ で確認できます。
現在、多くのクライアントが HTTP/3 を完全にはサポートしていないため、このサーバーが HTTP/3 と HTTPS の両方をサポートすることは非常に重要です。
注意事項
- HTTP/3 は TLS 1.3 のサポートを必要とするため、有効な証明書と秘密鍵の設定が必須です。
- クライアントが HTTP/3 プロトコルをサポートしている場合にのみこの機能を利用でき、そうでない場合は HTTP/1.1 または HTTP/2 にフォールバックします。
- 本番環境では、自己署名証明書ではなく、信頼された CA が発行した証明書を使用する必要があります。