fix: corriger conflit upgrade WebSocket entre proxy LiveKit et audio-levels
AudioLevelsServer s'auto-attachait à l'événement 'upgrade' du serveur HTTP via la lib ws (server + path), en plus du listener manuel du proxy LiveKit. Pour toute connexion /livekit, les deux listeners s'exécutaient : le proxy LiveKit aboutissait bien côté upstream, mais le listener ws (path /audio-levels ne matchant pas) appelait abortHandshake(socket, 400) sur le même socket juste après, cassant la connexion côté client en HTTPS prod. AudioLevelsServer passe maintenant en noServer: true et expose handleUpgrade(), appelée par un dispatcher 'upgrade' unique dans server/index.js qui route explicitement par chemin (/livekit vs /audio-levels). Ajout de certs/ au .gitignore (clés privées SSL locales mkcert).
This commit is contained in:
@@ -91,9 +91,11 @@ export class AudioLevelsServer extends EventEmitter {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
// Si un serveur HTTP est fourni, utiliser le même port (upgrade HTTP → WebSocket)
|
||||
// noServer: true car l'upgrade est dispatché manuellement par server/index.js
|
||||
// (un seul listener 'upgrade' partagé avec le proxy LiveKit, voir handleUpgrade())
|
||||
// Sinon, créer un serveur WebSocket standalone sur son propre port
|
||||
const wsOptions = this.options.server
|
||||
? { server: this.options.server, path: '/audio-levels' }
|
||||
? { noServer: true }
|
||||
: { port: this.options.port };
|
||||
|
||||
this.wss = new WebSocketServer(wsOptions);
|
||||
@@ -125,6 +127,16 @@ export class AudioLevelsServer extends EventEmitter {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Complète l'upgrade WebSocket pour une requête déjà identifiée comme
|
||||
* ciblant ce serveur (voir le dispatcher 'upgrade' dans server/index.js)
|
||||
*/
|
||||
handleUpgrade(req, socket, head) {
|
||||
this.wss.handleUpgrade(req, socket, head, (ws) => {
|
||||
this.wss.emit('connection', ws, req);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Gère une nouvelle connexion client
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user