Refactor daemon connection logic and enhance error handling

- Simplified fallback logic for daemon URL generation, removing hardcoded values and using dynamic protocol and hostname.
- Added detailed error messages for common WebSocket connection issues, improving debugging capabilities.
- Updated reconnection warning messages to guide users on potential configuration issues with the daemon server.
This commit is contained in:
Torsten Schulz (local)
2025-11-24 20:28:11 +01:00
parent 3f043fc315
commit 29dd7ec80c

View File

@@ -270,20 +270,11 @@ const store = createStore({
// Wenn Umgebungsvariable nicht gesetzt ist oder leer, verwende Fallback-Logik
if (!daemonUrl || (typeof daemonUrl === 'string' && daemonUrl.trim() === '')) {
if (isLocalhost) {
// Für lokale Entwicklung: direkte Daemon-Verbindung
daemonUrl = 'ws://127.0.0.1:4551';
console.log('[Daemon] Verwende localhost-Fallback');
} else if (isProduction) {
// Für Produktion: wss://www.your-part.de:4551
daemonUrl = 'wss://www.your-part.de:4551';
console.log('[Daemon] Verwende Produktions-Fallback');
} else {
// Fallback: basierend auf Protokoll
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
daemonUrl = `${protocol}//${hostname}:4551`;
console.log('[Daemon] Verwende generischen Fallback basierend auf Hostname');
}
// Fallback: basierend auf Protokoll und Hostname (dynamisch generiert, keine hardcodierten Werte)
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const port = '4551';
daemonUrl = `${protocol}//${hostname}:${port}`;
console.log('[Daemon] Verwende Fallback basierend auf Hostname und Protokoll');
} else {
console.log('[Daemon] Verwende Umgebungsvariable');
}
@@ -388,6 +379,17 @@ const store = createStore({
console.error('[Daemon] WebSocket-Fehler:', error, 'ReadyState:', daemonSocket.readyState, 'URL:', daemonUrl);
// Detaillierte Fehlermeldung für häufige Probleme
if (daemonSocket.readyState === WebSocket.CLOSED) {
const urlObj = new URL(daemonUrl);
console.error(`[Daemon] Verbindung fehlgeschlagen zu ${urlObj.hostname}:${urlObj.port}`);
console.error('[Daemon] Mögliche Ursachen:');
console.error(' - Daemon-Server läuft nicht auf diesem Port');
console.error(' - Port ist durch Firewall blockiert');
console.error(' - Falscher Port in VITE_DAEMON_SOCKET');
console.error(` - Aktuell konfiguriert: ${daemonUrl}`);
}
// Bereinige Socket-Referenz bei Fehler
if (state.daemonSocket === daemonSocket) {
state.daemonSocket = null;
@@ -451,7 +453,12 @@ const store = createStore({
// Maximale Anzahl von Versuchen: 15
const maxRetries = 15;
if (state.daemonRetryCount >= maxRetries) {
console.warn(`[Daemon] Maximale Anzahl von Reconnect-Versuchen (${maxRetries}) erreicht. Warte länger...`);
console.warn(`[Daemon] Maximale Anzahl von Reconnect-Versuchen (${maxRetries}) erreicht.`);
console.warn('[Daemon] Bitte prüfen Sie:');
console.warn(' 1. Läuft der Daemon-Server?');
console.warn(' 2. Ist der Port in VITE_DAEMON_SOCKET korrekt?');
console.warn(' 3. Ist der Port durch Firewall/Netzwerk erreichbar?');
console.warn(` 4. Aktuell konfiguriert: ${import.meta.env?.VITE_DAEMON_SOCKET || 'nicht gesetzt'}`);
// Warte länger nach maximalen Versuchen (30 Sekunden)
state.daemonRetryCount = 0; // Reset für nächsten Zyklus
const delay = 30000;