A high-performance peer-to-peer file-sharing application designed for secure, direct data exchange.
- Frontend: Flutter (WebRTC / RTCDataChannel)
- Signaling Server: Spring Boot (WebSockets) -> Moving to Go for high concurrency!
- STUN Server: Standard Java (Custom UDP Implementation)
- Protocol: WebRTC (SCTP over UDP)
- Room Creation: Sender initiates a WebSocket connection to the signaling server.
- Joining: Receiver joins via a unique
RoomID. - SDP Exchange:
- Sender generates Offer (SDP).
- Receiver processes Offer and generates Answer (SDP).
- ICE Gathering (Parallel): Both peers query the Java STUN Server to discover their public IP/Port.
- Candidate Exchange: Peers relay their ICE Candidates via the signaling server.
- Direct Connection: Once a path is found, a direct
RTCDataChannelis opened, and file transfer beginsโbypassing the servers entirely.
- Zero-Server Storage: Files never touch the server; they move directly from phone to phone.
- Custom STUN: Optimized reflection logic built from scratch in Java.
- Async Messaging: Non-blocking signaling flow for fast room negotiation.