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:
@@ -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();
|
||||
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user