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
This commit is contained in:
2026-05-26 14:19:56 +02:00
parent 6c35121866
commit 37aa447ecd
+14 -2
View File
@@ -56,6 +56,7 @@ export class AudioLevelsServer extends EventEmitter {
this.options = { this.options = {
port: options.port || 3001, port: options.port || 3001,
server: options.server || null, // Serveur HTTP existant
updateRateMs: options.updateRateMs || 50, // 20 fois/sec updateRateMs: options.updateRateMs || 50, // 20 fois/sec
...options ...options
}; };
@@ -89,7 +90,13 @@ export class AudioLevelsServer extends EventEmitter {
start() { start() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
try { 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.wss.on('connection', (ws, req) => {
this._handleNewConnection(ws, req); this._handleNewConnection(ws, req);
@@ -104,7 +111,12 @@ export class AudioLevelsServer extends EventEmitter {
// Démarrage du broadcast périodique // Démarrage du broadcast périodique
this._startBroadcast(); 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'); this.emit('started');
resolve(); resolve();
} catch (error) { } catch (error) {