From 37aa447ecda4eb618090b3e77a989faad0d86092 Mon Sep 17 00:00:00 2001 From: Benoit Date: Tue, 26 May 2026 14:19:56 +0200 Subject: [PATCH] fix: WebSocket audio-levels utilise le meme serveur HTTP Probleme: AudioLevelsServer creait son propre port (3001) au lieu d'utiliser le serveur HTTP existant (3000) Solution: - Modification AudioLevelsServer pour accepter option 'server' - Si serveur HTTP fourni, utilise WebSocket upgrade sur meme port avec path /audio-levels - Sinon, fallback sur port standalone (3001) - Client se connecte maintenant a ws://localhost:3000/audio-levels Architecture WebSocket: HTTP GET /config, POST /token (port 3000) WebSocket ws://localhost:3000/audio-levels (upgrade HTTP) Plus besoin de port separe pour WebSocket --- server/websocket/AudioLevelsServer.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/server/websocket/AudioLevelsServer.js b/server/websocket/AudioLevelsServer.js index 9006b07..8442289 100644 --- a/server/websocket/AudioLevelsServer.js +++ b/server/websocket/AudioLevelsServer.js @@ -56,6 +56,7 @@ export class AudioLevelsServer extends EventEmitter { this.options = { port: options.port || 3001, + server: options.server || null, // Serveur HTTP existant updateRateMs: options.updateRateMs || 50, // 20 fois/sec ...options }; @@ -89,7 +90,13 @@ export class AudioLevelsServer extends EventEmitter { start() { return new Promise((resolve, reject) => { try { - this.wss = new WebSocketServer({ port: this.options.port }); + // Si un serveur HTTP est fourni, utiliser le même port (upgrade HTTP → WebSocket) + // Sinon, créer un serveur WebSocket standalone sur son propre port + const wsOptions = this.options.server + ? { server: this.options.server, path: '/audio-levels' } + : { port: this.options.port }; + + this.wss = new WebSocketServer(wsOptions); this.wss.on('connection', (ws, req) => { this._handleNewConnection(ws, req); @@ -104,7 +111,12 @@ export class AudioLevelsServer extends EventEmitter { // Démarrage du broadcast périodique this._startBroadcast(); - console.log(`WebSocket AudioLevels démarré sur ws://localhost:${this.options.port}`); + if (this.options.server) { + console.log(`WebSocket AudioLevels démarré sur path /audio-levels (même port que HTTP)`); + } else { + console.log(`WebSocket AudioLevels démarré sur ws://localhost:${this.options.port}`); + } + this.emit('started'); resolve(); } catch (error) {