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