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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user