diff --git a/examples/basic-host/src/index.tsx b/examples/basic-host/src/index.tsx index 8584326ec..e33fc17cb 100644 --- a/examples/basic-host/src/index.tsx +++ b/examples/basic-host/src/index.tsx @@ -350,7 +350,27 @@ class ErrorBoundary extends Component { async function connectToAllServers(): Promise { const serverUrlsResponse = await fetch("/api/servers"); const serverUrls = (await serverUrlsResponse.json()) as string[]; - return Promise.all(serverUrls.map((url) => connectToServer(new URL(url)))); + + // Use allSettled to be resilient to individual server failures + const results = await Promise.allSettled( + serverUrls.map((url) => connectToServer(new URL(url))) + ); + + const servers: ServerInfo[] = []; + for (let i = 0; i < results.length; i++) { + const result = results[i]; + if (result.status === "fulfilled") { + servers.push(result.value); + } else { + console.warn(`[HOST] Failed to connect to ${serverUrls[i]}:`, result.reason); + } + } + + if (servers.length === 0 && serverUrls.length > 0) { + throw new Error(`Failed to connect to any servers (${serverUrls.length} attempted)`); + } + + return servers; } createRoot(document.getElementById("root")!).render( diff --git a/examples/threejs-server/src/threejs-app.tsx b/examples/threejs-server/src/threejs-app.tsx index 8851f881b..137890632 100644 --- a/examples/threejs-server/src/threejs-app.tsx +++ b/examples/threejs-server/src/threejs-app.tsx @@ -172,6 +172,7 @@ export default function ThreeJSApp({ return (
= { "#memory-bar-fill", // Memory bar fill level "#info-uptime", // System uptime ], - threejs: ["canvas"], // 3D render canvas (dynamic animation) + threejs: ["#threejs-canvas", ".threejs-container"], // 3D render canvas (dynamic animation) "wiki-explorer": ["#graph"], // Force-directed graph (dynamic layout) };