Files
games/crates/common/game-realtime-webtransport-lib
2026-09-21 22:36:38 +02:00
..
2026-09-21 22:36:38 +02:00
2026-09-21 22:36:38 +02:00
2026-09-21 22:36:38 +02:00
2026-09-21 22:36:38 +02:00
2026-09-21 22:36:38 +02:00

game-realtime-webtransport-lib

Backend WebTransport/QUIC candidat pour le realtime de games.sasedev.

Responsabilité

La crate possède le transport WebTransport concret sans introduire de sémantique gameplay, room, joueur, tick ou snapshot. Son chemin natif repose sur web-transport-quinn et conserve les erreurs publiques dans game-realtime-transport-lib.

La première frontière disponible couvre :

  • configuration client HTTPS avec pin SHA-256 exact ;
  • identité serveur X.509 DER + clé privée PKCS#8 DER injectables ;
  • génération locale d'une identité self-signed ECDSA P-256 à validité courte pour localhost, IPv4 loopback et IPv6 loopback ;
  • bind UDP/QUIC sur adresse explicite ou port éphémère ;
  • établissement HTTP/3 WebTransport client/server natif ;
  • tracing sous games::realtime::webtransport.

TLS de développement

WebTransportServerIdentity::generate_loopback() crée une identité en mémoire. La clé privée n'est ni écrite ni versionnée. Le certificat est valide sept jours, avec une petite marge de clock skew, et son SHA-256 est exposé à travers WebTransportCertificateHash afin que le client puisse utiliser le pinning fourni par web-transport-quinn.

Une identité préexistante peut être injectée en DER avec WebTransportServerIdentity::from_pkcs8_der(...). La compatibilité certificat/clé est alors vérifiée par le builder TLS au bind du serveur.

Aucune option de désactivation globale de la vérification TLS n'est exposée.

Frontières actuelles

Cette crate n'adapte pas encore une session vers RealtimeConnection. Elle n'ouvre pas encore le stream bidirectionnel applicatif principal et ne définit donc ni framing message, ni limites de payload, ni deadlines applicatives, ni datagram API commune.

Ces responsabilités doivent rester séparées de la seule preuve d'établissement natif afin que l'introduction de QUIC/TLS demeure testable indépendamment du futur framing fiable.

Le chemin natif sexécute sous un runtime Tokio fourni par le consommateur ; la crate ne crée ni runtime ni thread privé. Le chemin navigateur/WASM est distinct : aucun cfg WASM ni dépendance navigateur n'est requis par le backend natif actuel.