fix: démarrage manuel et gestion état serveur
Corrections :
- Serveur NE démarre PLUS automatiquement au lancement
- Utilisateur doit cliquer "Démarrer" (contrôle explicite)
- Logs stderr LiveKit traités comme INFO (pas ERROR)
- Détection démarrage dans stderr aussi ("starting LiveKit server")
- Frontend : charge données seulement si serveur actif
- Polling démarre/arrête selon état serveur
- État initial : bouton Démarrer enabled, Arrêter disabled
Expérience :
1. Lancer app → Interface visible, serveur arrêté
2. Cliquer "Démarrer" → Serveur démarre
3. Dashboard se met à jour automatiquement
4. Cliquer "Arrêter" → Serveur s'arrête, polling stop
Plus de démarrage automatique surprise !
This commit is contained in:
+26
-5
@@ -152,14 +152,34 @@ async function startServer() {
|
||||
|
||||
serverProcess.stderr.on('data', (data) => {
|
||||
const output = data.toString();
|
||||
console.error('[Serveur Error]', output);
|
||||
|
||||
// LiveKit envoie INFO/WARN dans stderr (comportement normal Go)
|
||||
// Ne les traiter comme erreurs que s'ils contiennent vraiment "ERROR"
|
||||
const isError = output.includes('ERROR') || output.includes('Error:');
|
||||
|
||||
console.log(isError ? '[Serveur Error]' : '[Serveur]', output);
|
||||
|
||||
if (mainWindow) {
|
||||
mainWindow.webContents.send('server:log', {
|
||||
level: 'error',
|
||||
level: isError ? 'error' : 'info',
|
||||
message: output.trim()
|
||||
});
|
||||
}
|
||||
|
||||
// Détecter démarrage LiveKit dans stderr
|
||||
if (output.includes('starting LiveKit server') || output.includes('Serveur prêt')) {
|
||||
if (!serverStarted) {
|
||||
serverStarted = true;
|
||||
console.log('✅ Serveur démarré (détecté via stderr)');
|
||||
|
||||
if (mainWindow) {
|
||||
mainWindow.webContents.send('server:status', { running: true });
|
||||
}
|
||||
|
||||
createTray();
|
||||
resolve({ success: true, url: SERVER_URL });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
serverProcess.on('error', (error) => {
|
||||
@@ -361,9 +381,10 @@ app.whenReady().then(async () => {
|
||||
console.log('✅ Certificats présents\n');
|
||||
}
|
||||
|
||||
// Démarrer le serveur automatiquement
|
||||
console.log('🔄 Démarrage automatique du serveur...');
|
||||
await startServer();
|
||||
// NE PAS démarrer automatiquement
|
||||
// L'utilisateur cliquera sur "Démarrer" dans l'interface
|
||||
console.log('✅ Application prête');
|
||||
console.log('💡 Cliquez sur "Démarrer" pour lancer le serveur\n');
|
||||
});
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
|
||||
+15
-2
@@ -26,8 +26,12 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
// Vérifier le statut initial du serveur
|
||||
await checkServerStatus();
|
||||
|
||||
// Charger les données initiales
|
||||
loadInitialData();
|
||||
// Charger les données initiales SEULEMENT si serveur actif
|
||||
if (serverRunning) {
|
||||
loadInitialData();
|
||||
} else {
|
||||
console.log('⏸️ Serveur arrêté, en attente de démarrage...');
|
||||
}
|
||||
});
|
||||
|
||||
// ========== Navigation ==========
|
||||
@@ -159,11 +163,20 @@ function updateServerStatus(running) {
|
||||
statusText.textContent = 'Actif';
|
||||
btnStart.disabled = true;
|
||||
btnStop.disabled = false;
|
||||
|
||||
// Démarrer le polling
|
||||
startStatsPolling();
|
||||
|
||||
// Charger les données initiales
|
||||
loadInitialData();
|
||||
} else {
|
||||
indicator.textContent = '⚪';
|
||||
statusText.textContent = 'Arrêté';
|
||||
btnStart.disabled = false;
|
||||
btnStop.disabled = true;
|
||||
|
||||
// Arrêter le polling
|
||||
stopStatsPolling();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user