/** * novncHtml — noVNC-Client fuer die WebView, dessen WebSocket durch den * RVS-Tunnel gebrueckt wird. * * Trick: window.WebSocket wird VOR dem Laden von noVNC durch einen Shim * ersetzt. noVNC (RFB) glaubt, ein echtes WebSocket zu benutzen; tatsaechlich * gehen die RFB-Bytes als Base64 per postMessage an RN → RVS → Bridge → QEMU * (und zurueck). Da RFB "server-speaks-first" ist, ist die Reihenfolge robust. * * noVNC wird vom CDN geladen (das Telefon hat Internet, da es ohnehin am RVS * haengt). Voll-offline-Bundling waere ein spaeterer Schritt. * * Protokoll: * RN -> WebView window.ariaVnc.onData(b64) RFB-Bytes vom Server * WebView -> RN {event:'ready'} RFB initialisiert → Tunnel oeffnen * {event:'vnc_send', b64} RFB-Bytes an den Server * {event:'vnc_close'} RFB hat geschlossen * {event:'vnc_state', state} connected|disconnected */ export const NOVNC_HTML = `
Verbinde mit Desktop …
`;