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
|
// Wenn Umgebungsvariable nicht gesetzt ist oder leer, verwende Fallback-Logik
|
||||||
if (!daemonUrl || (typeof daemonUrl === 'string' && daemonUrl.trim() === '')) {
|
if (!daemonUrl || (typeof daemonUrl === 'string' && daemonUrl.trim() === '')) {
|
||||||
if (isLocalhost) {
|
// Fallback: basierend auf Protokoll und Hostname (dynamisch generiert, keine hardcodierten Werte)
|
||||||
// Für lokale Entwicklung: direkte Daemon-Verbindung
|
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||||
daemonUrl = 'ws://127.0.0.1:4551';
|
const port = '4551';
|
||||||
console.log('[Daemon] Verwende localhost-Fallback');
|
daemonUrl = `${protocol}//${hostname}:${port}`;
|
||||||
} else if (isProduction) {
|
console.log('[Daemon] Verwende Fallback basierend auf Hostname und Protokoll');
|
||||||
// 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');
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
console.log('[Daemon] Verwende Umgebungsvariable');
|
console.log('[Daemon] Verwende Umgebungsvariable');
|
||||||
}
|
}
|
||||||
@@ -388,6 +379,17 @@ const store = createStore({
|
|||||||
|
|
||||||
console.error('[Daemon] WebSocket-Fehler:', error, 'ReadyState:', daemonSocket.readyState, 'URL:', daemonUrl);
|
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
|
// Bereinige Socket-Referenz bei Fehler
|
||||||
if (state.daemonSocket === daemonSocket) {
|
if (state.daemonSocket === daemonSocket) {
|
||||||
state.daemonSocket = null;
|
state.daemonSocket = null;
|
||||||
@@ -451,7 +453,12 @@ const store = createStore({
|
|||||||
// Maximale Anzahl von Versuchen: 15
|
// Maximale Anzahl von Versuchen: 15
|
||||||
const maxRetries = 15;
|
const maxRetries = 15;
|
||||||
if (state.daemonRetryCount >= maxRetries) {
|
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)
|
// Warte länger nach maximalen Versuchen (30 Sekunden)
|
||||||
state.daemonRetryCount = 0; // Reset für nächsten Zyklus
|
state.daemonRetryCount = 0; // Reset für nächsten Zyklus
|
||||||
const delay = 30000;
|
const delay = 30000;
|
||||||
|
|||||||
Reference in New Issue
Block a user