How rustvnc/rustvncserver works
rustvncserver is an asynchronous Rust VNC/RFB server library. An application configures a server and supplies framebuffer pixels; viewers connect over RFB, authenticate if configured, negotiate pixel format and encodings, and receive framebuffer updates. Viewer input and connection events flow back to the application. The README also documents reverse viewer connections, UltraVNC repeater connections, and CopyRect. Sampled source shows server/client coordination, authentication, and dirty-region tracking; detailed wiring for unsampled protocol paths is not inferred.
Main entry points: server.rs Server API · client.rs Client Session · repeater.rs Repeater Connect · framebuffer.rs Framebuffer
Components 14
Application API
- Server API
src/server.rs - Event API
src/events.rs
Connections
- TCP Listener
src/server.rs - Reverse Connect
src/server.rs - Repeater Connect
src/repeater.rs
RFB Session
- Client Session
src/client.rs - RFB Protocol
src/protocol.rs - VNC Authentication
src/auth.rs - Client Events
src/client.rs
Display Updates
- Framebuffer
src/framebuffer.rs - RFB Encodings
Other components
- Application
- VNC Viewer
- VNC Repeater
Connections 20
- Application → Server API: configures and starts
- Server API → TCP Listener: listens
- VNC Viewer → TCP Listener: connects
- TCP Listener → Client Session: dispatches client
- Server API → Reverse Connect: starts reverse connection
- Reverse Connect → VNC Viewer: connects to
- Server API → Repeater Connect: starts repeater connection
- Repeater Connect → VNC Repeater: sends repeater ID
- Repeater Connect → Client Session: initializes session
- Client Session → RFB Protocol: exchanges messages
- Client Session → VNC Authentication: verifies challenge
- Client Session → Framebuffer: reads display regions
- Framebuffer → Client Session: tracks dirty regions
- Client Session → RFB Encodings: encodes updates
- Application → Server API: updates pixels
- Server API → Framebuffer: updates and copies pixels
- Client Session → Client Events: emits input events
- Client Events → Server API: forwards client events
- Server API → Event API: publishes server events
- Event API → Application: delivers events