Fix: Verwende Socket.io für alle WebSocket-Verbindungen

Problem:
- Frontend versuchte native WebSocket-Verbindung zu /ws/ aufzubauen
- Backend hat nur Socket.io, keine native WebSocket-Unterstützung für /ws/

Lösung:
- Daemon WebSocket verwendet jetzt Socket.io statt native WebSocket
- Beide Verbindungen (Socket.io und Daemon) verwenden jetzt Socket.io
- Event-Handler von WebSocket auf Socket.io umgestellt

Dies löst die WebSocket-Verbindungsfehler, da der Backend-Server
nur Socket.io unterstützt, keine nativen WebSockets.
This commit is contained in:
Torsten Schulz (local)
2025-09-03 20:39:29 +02:00
parent 1449cc7c9d
commit d816cab0c3

View File

@@ -128,36 +128,35 @@ const store = createStore({
if (currentDaemonSocket) { if (currentDaemonSocket) {
currentDaemonSocket.disconnect(); currentDaemonSocket.disconnect();
} }
console.log('🔌 Initializing Daemon WebSocket connection to:', import.meta.env.VITE_DAEMON_SOCKET); console.log('🔌 Initializing Daemon WebSocket connection to:', import.meta.env.VITE_API_BASE_URL);
try { try {
const daemonSocket = new WebSocket(import.meta.env.VITE_DAEMON_SOCKET); // Use Socket.io for daemon connection instead of native WebSocket
const daemonSocket = io(import.meta.env.VITE_API_BASE_URL, {
daemonSocket.onopen = () => { secure: true,
console.log('✅ Daemon WebSocket connected successfully'); transports: ['websocket', 'polling']
const payload = JSON.stringify({
event: 'setUserId',
data: { userId: state.user.id }
}); });
daemonSocket.send(payload);
};
daemonSocket.onclose = (event) => { daemonSocket.on('connect', () => {
console.warn(' Daemon WebSocket disconnected:', event.reason); console.log(' Daemon Socket.io connected successfully');
daemonSocket.emit('setUserId', state.user.id);
});
daemonSocket.on('disconnect', (reason) => {
console.warn('❌ Daemon Socket.io disconnected:', reason);
retryConnection(connectDaemonSocket); retryConnection(connectDaemonSocket);
}; });
daemonSocket.onerror = (error) => { daemonSocket.on('connect_error', (error) => {
console.error('❌ Daemon WebSocket error:', error); console.error('❌ Daemon Socket.io error:', error);
retryConnection(connectDaemonSocket); retryConnection(connectDaemonSocket);
}; });
daemonSocket.addEventListener('message', (event) => { daemonSocket.on('message', (data) => {
const message = event.data; if (data === "ping") {
if (message === "ping") { daemonSocket.emit("pong");
daemonSocket.send("pong");
} else { } else {
try { try {
const data = JSON.parse(message); const parsedData = JSON.parse(data);
} catch (error) { } catch (error) {
console.error("Error parsing message:", error); console.error("Error parsing message:", error);
} }
@@ -166,8 +165,8 @@ const store = createStore({
commit('setDaemonSocket', daemonSocket); commit('setDaemonSocket', daemonSocket);
} catch (error) { } catch (error) {
console.error('❌ Failed to create Daemon WebSocket:', error); console.error('❌ Failed to create Daemon Socket.io:', error);
console.error('❌ URL attempted:', import.meta.env.VITE_DAEMON_SOCKET); console.error('❌ URL attempted:', import.meta.env.VITE_API_BASE_URL);
retryConnection(connectDaemonSocket); retryConnection(connectDaemonSocket);
} }
}; };