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 = {
|
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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user