ironrdp-web crate provides WASM bindings, and the web-client directory contains a production-ready Web Component and demo client.
Architecture
The web stack consists of:ironrdp-web- Rust WASM bindings compiled withwasm-packiron-remote-desktop- Reusable Web Component (framework-agnostic)iron-remote-desktop-rdp- TypeScript implementation of RDP-specific logiciron-svelte-client- Demo Svelte-based RDP client
Building the WASM Module
crates/ironrdp-web/pkg/
├── ironrdp_web.js
├── ironrdp_web_bg.wasm
├── ironrdp_web.d.ts
└── package.json
Open http://localhost:5173 in your browser.
Using the WASM Bindings
Basic TypeScript Example
Rendering to HTML5 Canvas
Handling Input Events
Using the Web Component
Theiron-remote-desktop Web Component provides a complete RDP client:
Web Component API
Svelte Integration
Theiron-svelte-client demonstrates full integration:
Advanced Features
Clipboard Support
Custom Network Transport
Replace the default WebSocket transport:Touch Input Support
Connection via Gateway
Connect through a Devolutions Gateway or websockify proxy:Performance Optimization
WASM Streaming
Worker Thread Processing
Request Animation Frame
Debugging
Enable Console Logging
Browser DevTools
Deployment
Static Hosting
Deploy to any static host (Netlify, Vercel, GitHub Pages):Headers Configuration
For WASM to work, configure CORS headers:Service Worker Caching
Browser Compatibility
IronRDP WASM works on:- ✅ Chrome/Edge 90+
- ✅ Firefox 88+
- ✅ Safari 15+
- ✅ Mobile browsers (iOS Safari, Chrome Android)
- WebAssembly
- WebSocket (or alternative transport)
- Canvas API
- ES Modules
Production Examples
Devolutions ships production IronRDP web clients in:- Devolutions Gateway - Standalone web interface (free, since v2024.1.0)
- Devolutions Server - Self-hosted credential manager
- Devolutions Hub - Cloud-based credential manager
Next Steps
- Building a Client - Understand the underlying architecture
- Graphics Rendering - Optimize canvas rendering
- Virtual Channels - Add clipboard and custom channels

