diff --git a/ui/services/websocket-client.js b/ui/services/websocket-client.js index 93428b87..208e0780 100644 --- a/ui/services/websocket-client.js +++ b/ui/services/websocket-client.js @@ -1,9 +1,19 @@ // WebSocket Client for Three.js Visualization - WiFi DensePose -// Connects to ws://localhost:8000/ws/pose and manages real-time data flow +// Default endpoint is `/ws/sensing` on the same host the page was served from. +// Callers (e.g. viz.html) usually pass an explicit `url` derived from +// `buildSensingWsUrl()` so HTTP/WS port pairings are handled centrally. + +function _defaultWsUrl() { + if (typeof window === 'undefined' || !window.location) { + return 'ws://localhost:8765/ws/sensing'; + } + const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; + return `${protocol}//${window.location.host}/ws/sensing`; +} export class WebSocketClient { constructor(options = {}) { - this.url = options.url || 'ws://localhost:8000/ws/pose'; + this.url = options.url || _defaultWsUrl(); this.ws = null; this.state = 'disconnected'; // disconnected, connecting, connected, error this.isRealData = false; diff --git a/ui/utils/toast.js b/ui/utils/toast.js index ec1a097e..219c713a 100644 --- a/ui/utils/toast.js +++ b/ui/utils/toast.js @@ -27,6 +27,8 @@ export class ToastManager { action = null } = options; + if (!this.container) this.init(); + const id = ++this.idCounter; const toast = document.createElement('div'); toast.className = `toast toast-${type}`; diff --git a/ui/viz.html b/ui/viz.html index 54fa0a5f..f87f65e8 100644 --- a/ui/viz.html +++ b/ui/viz.html @@ -84,22 +84,41 @@
- - - + + - +