feat: generation automatique token JWT pour AudioBridge participant

- Import AccessToken depuis livekit-server-sdk
- Generation token avec identity 'AudioBridge' et metadata role:bridge
- Permissions completes (publish, subscribe, data)
- Utilise devkey/secret du serveur LiveKit
- Permet au bridge de se connecter en tant que participant authentifie
This commit is contained in:
2026-05-26 14:32:16 +02:00
parent be05755677
commit cc4f5ca35a
3 changed files with 30 additions and 3 deletions
+28 -1
View File
@@ -5,6 +5,7 @@
*/
import { EventEmitter } from 'events';
import { AccessToken } from 'livekit-server-sdk';
import configManager from '../config/ConfigManager.js';
class AudioBridgeManager extends EventEmitter {
@@ -31,6 +32,32 @@ class AudioBridgeManager extends EventEmitter {
const config = configManager.get();
console.log('🎵 Démarrage AudioBridge avec configuration:', config.audio);
// Génération du token JWT pour le participant serveur
const token = new AccessToken(
config.server?.livekit?.apiKey || 'devkey',
config.server?.livekit?.apiSecret || 'secret',
{
identity: 'AudioBridge',
name: 'Audio Bridge Server',
metadata: JSON.stringify({
role: 'bridge',
capabilities: ['audio-routing', 'monitoring']
})
}
);
// Permissions complètes pour le bridge serveur
token.addGrant({
room: 'main',
roomJoin: true,
canPublish: true,
canSubscribe: true,
canPublishData: true
});
const liveKitToken = await token.toJwt();
console.log('✓ Token JWT généré pour AudioBridge');
// Import dynamique du AudioBridge
const { AudioBridge } = await import('./AudioBridge.js');
@@ -39,7 +66,7 @@ class AudioBridgeManager extends EventEmitter {
...config.audio,
// Options LiveKit
liveKitUrl: config.server?.livekit?.url || 'ws://localhost:7880',
liveKitToken: null, // Le bridge serveur n'a pas besoin de token pour l'instant
liveKitToken,
roomName: 'main',
// Options de routing
routing: config.audio?.routing || {},