diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/stream.rs b/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/stream.rs index 69f8747b..d397fbac 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/stream.rs +++ b/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/stream.rs @@ -122,17 +122,23 @@ async fn index() -> Html { let pointsMesh = null; - // WebSocket - const ws = new WebSocket(`ws://${location.host}/ws`); - ws.onmessage = (e) => { - const data = JSON.parse(e.data); - if (data.type === 'pointcloud' && data.splats) { - updateSplats(data.splats); - document.getElementById('stats').innerHTML = - `Points: ${data.points}
Splats: ${data.splats.length}
FPS: 10`; + // Poll API for updates (no WebSocket needed) + async function fetchCloud() { + try { + const resp = await fetch('/api/splats'); + const data = await resp.json(); + if (data.splats) { + updateSplats(data.splats); + document.getElementById('stats').innerHTML = + `Splats: ${data.count}
Timestamp: ${new Date(data.timestamp).toLocaleTimeString()}`; + } + } catch(e) { + document.getElementById('stats').innerHTML = 'Error: ' + e.message; } - }; - ws.onopen = () => { document.getElementById('stats').innerHTML = 'Connected'; }; + } + fetchCloud(); + setInterval(fetchCloud, 1000); // refresh every second + document.getElementById('stats').innerHTML = 'Loading...'; function updateSplats(splats) { if (pointsMesh) scene.remove(pointsMesh);