Ce projet présente un simple chat HTML utilisant WebRTC et programmé en Rust et compilé sur WASM. Démo en direct
Après avoir lu ce merveilleux article de l'équipe Cheerp, je voulais voir si la même chose pouvait être faite avec Rust "pur" en utilisant WASM.
Comme créer un jeu à partir de zéro était trop compliqué dans un premier temps, j'avais pour objectif de simplement jouer avec Rust, HTML (en utilisant Yew) et WebRTC en créant une application de chat. La 3D et WebGL viendront une autre fois.
Il s’avère qu’il n’est pas très difficile de faire fonctionner quelque chose comme vous pouvez le voir ci-dessous :
Si vous essayez d'exécuter localement, préférez tester avec Chrome localement car j'ai rencontré des problèmes avec Firefox. Attention également, certaines extensions peuvent bloquer les connexions WebRTC. De plus, si vous testez avec un ami, cela pourrait ne pas fonctionner car j'utilise uniquement un serveur STUN. Grâce aux tests que j'ai effectués, j'ai découvert que les connexions sont souvent bloquées sur les réseaux d'entreprise et que l'utilisation d'un serveur TURN résoudrait le problème. Mais contrairement au serveur STUN, il n'existe pas de serveurs TURN gratuits. Enfin, la gestion des erreurs n'est pas encore totalement terminée car je ne sais pas comment je gère réellement les erreurs (et aussi ce que l'API WebRTC me permet de faire). Si vous êtes bloqué, rechargez la page des deux côtés et réessayez.
Pour construire ce projet, vous devez :
cargo install wasm-pack
cargo install http-server
Pour l'exécuter une fois construit, vous devez taper
wasm-pack build --target web --no-typescript --out-dir ./static/pkg
static
avec http-server -p 8080
(vous pouvez également utiliser n'importe quel serveur de fichiers statique comme python3 -m http.server
)