107 lines
1.8 KiB
Plaintext
107 lines
1.8 KiB
Plaintext
Fase 1 — Signaling minimal (MVP control-plane)
|
|
|
|
Obiettivo: vedere agent online e fare “connect_request/accept”.
|
|
|
|
Server
|
|
|
|
WebSocket endpoints: /agent e /client
|
|
|
|
Registry device in memoria + persist (DB)
|
|
|
|
Auth semplice:
|
|
|
|
client login (username/pwd hash)
|
|
|
|
agent pairing con pairCode (inizialmente manuale)
|
|
|
|
Android
|
|
|
|
Connessione WS + heartbeat
|
|
|
|
DeviceId stabile
|
|
|
|
Ricezione connect_request → mostra notifica → accept/deny
|
|
|
|
Windows
|
|
|
|
Login + lista device + “richiedi connessione”
|
|
|
|
Deliverable: flusso completo “richiesta/accetta” senza WebRTC ancora.
|
|
|
|
Fase 2 — WebRTC video solo (prima connessione reale)
|
|
|
|
Obiettivo: stream schermo tablet → viewer su Windows.
|
|
|
|
Android
|
|
|
|
MediaProjection → encoder → WebRTC VideoTrack
|
|
|
|
ICE config: STUN+TURN
|
|
|
|
Start/Stop session
|
|
|
|
Windows
|
|
|
|
WebRTC receiver + render (Electron: <video> e basta)
|
|
|
|
Gestione resize + aspect
|
|
|
|
Deliverable: vedere lo schermo in tempo reale.
|
|
|
|
Fase 3 — Input base (tap, swipe, back/home)
|
|
|
|
Obiettivo: controllo reale.
|
|
|
|
Windows
|
|
|
|
Cattura mouse/keyboard
|
|
|
|
Coordinate mapping (considera rotazione e scaling)
|
|
|
|
Invio su DataChannel
|
|
|
|
Android
|
|
|
|
Parser input
|
|
|
|
dispatchGesture() per tap/swipe
|
|
|
|
performGlobalAction() per back/home/recents
|
|
|
|
Rate limit / validation (anti spam)
|
|
|
|
Deliverable: posso aprire app, cliccare bottoni, scorrere.
|
|
|
|
Fase 4 — Robustezza rete + osservabilità
|
|
|
|
Fallback TURN automatico (già in ICE, ma monitora)
|
|
|
|
Retry WS, reconnect, session resume
|
|
|
|
Metriche:
|
|
|
|
% TURN vs P2P
|
|
|
|
bitrate, fps, packet loss
|
|
|
|
tempi handshake
|
|
|
|
Log sessioni (audit)
|
|
|
|
Deliverable: sistema che regge ambienti reali.
|
|
|
|
Fase 5 — Sicurezza “production grade”
|
|
|
|
Pairing serio:
|
|
|
|
QR o codice one-time
|
|
|
|
device associato a account
|
|
|
|
Token short-lived (access) + refresh
|
|
|
|
Ruoli (admin/operatore)
|
|
|
|
“Allowlist controller” per device (opzionale)
|
|
|
|
Deliverable: pronto per distribuzione controllata. |