0.3.5-alpha.9
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: crates/common/game-realtime-webtransport-lib/USAGE.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Utilisation de game-realtime-webtransport-lib
|
||||
|
||||
Ce guide décrit les chemins fiables natif et client navigateur/WASM exposés par `game-realtime-webtransport-lib`. Il ne décrit ni gameplay, ni protocole wire métier, ni datagrams.
|
||||
Ce guide décrit les chemins fiables natif et client navigateur/WASM exposés par `game-realtime-webtransport-lib`, ainsi que la capacité datagram backend-spécifique. Il ne décrit ni gameplay ni protocole wire métier.
|
||||
|
||||
## Configuration transport
|
||||
|
||||
@@ -157,3 +157,25 @@ Ces deux méthodes sont backend-spécifiques : elles ne sont pas ajoutées au co
|
||||
Dropper un sender actif ou annuler une future `send()` en cours provoque un reset explicite. Dropper un receiver actif provoque un stop explicite. Cela évite qu'une cancellation d'écriture partielle soit interprétée comme une fermeture propre ou qu'une frame suivante reprenne au mauvais offset.
|
||||
|
||||
Une future `receive()` peut en revanche être annulée puis relancée : le backend conserve l'état partiel du header/payload et reprend le framing à l'octet correct.
|
||||
|
||||
## Datagrams WebTransport
|
||||
|
||||
Les datagrams sont une capacité propre à `WebTransportSession`; ils ne passent pas par `RealtimeConnection`. Toujours consulter la taille courante avant émission :
|
||||
|
||||
```rust
|
||||
let max_payload = session.max_datagram_size();
|
||||
if payload.len() <= max_payload {
|
||||
session.send_datagram(payload)?;
|
||||
}
|
||||
```
|
||||
|
||||
La réception est asynchrone :
|
||||
|
||||
```rust
|
||||
let payload = session.receive_datagram().await?;
|
||||
```
|
||||
|
||||
Ces appels ne donnent aucune garantie de livraison ni d'ordre. Une perte n'est pas une violation du transport datagram. Toute deadline de réception appartient donc au scénario consommateur ; elle n'est pas injectée dans `WebTransportConfig`.
|
||||
|
||||
Le chemin navigateur expose les mêmes noms, avec `send_datagram(...).await`. La surface reste backend-spécifique afin de ne pas imposer une sémantique non fiable à WebSocket ou au contrat fiable commun.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user