Este proyecto muestra un chat HTML simple que utiliza WebRTC, programado en Rust y compilado en WASM. Demostración en vivo
Después de leer esta maravillosa publicación del equipo de Cheerp, quería ver si se puede hacer lo mismo con Rust "puro" usando WASM.
Dado que hacer un juego desde cero era demasiado complicado como primer paso, mi objetivo era simplemente jugar con Rust, HTML (usando Yew) y WebRTC mediante una aplicación de chat. El 3D y WebGL llegarán en otra ocasión.
Resulta que no es muy difícil hacer que algo funcione como puedes ver a continuación:
Si intenta ejecutar localmente, prefiera probar con Chrome localmente porque encontré problemas con Firefox. Además, tenga cuidado porque algunas extensiones pueden bloquear las conexiones WebRTC. Además, si estás probando con un amigo, es posible que no funcione ya que solo estoy usando un servidor STUN. De las pruebas que hice, descubrí que las conexiones a menudo están bloqueadas en las redes corporativas y usar un servidor TURN resolvería el problema. Pero a diferencia del servidor STUN, no hay servidores TURN gratuitos. Finalmente, el manejo de errores aún no está totalmente terminado ya que no sé cómo manejo realmente los errores (y tampoco qué me permite hacer la API WebRTC). Si está atascado, vuelva a cargar la página en ambos lados y vuelva a intentarlo.
Para construir este proyecto necesitas:
cargo install wasm-pack
cargo install http-server
Para ejecutarlo una vez compilado, debes escribir
wasm-pack build --target web --no-typescript --out-dir ./static/pkg
static
con http-server -p 8080
(como alternativa, puede utilizar cualquier servidor de archivos estático como python3 -m http.server
)