Fix viewer: replace WebSocket with fetch polling

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv 2026-04-19 18:07:27 -04:00
parent c1336c6672
commit de5dc9a151
1 changed files with 16 additions and 10 deletions

View File

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