Hibaelhárítás
Ez az oldal segít a leggyakoribb problémák megoldásában és részletezi a fallback mechanizmus működését.
Értesítések Nem Jelennek Meg
Szekció neve “Értesítések Nem Jelennek Meg”1. Ellenőrizd a Socket.IO Kapcsolatot
Szekció neve “1. Ellenőrizd a Socket.IO Kapcsolatot”const notificationStore = getNotificationStore();console.log('Connected:', notificationStore.isConnected);Várható eredmény:
true— Socket.IO működik, valós idejű értesítésekfalse— Fallback mód, 30s polling
2. Ellenőrizd a Konzolt
Szekció neve “2. Ellenőrizd a Konzolt”Szerver konzol:
[Socket.IO] Client connected: abc123[Socket.IO] User registered: 123[Socket.IO] Notification sent to user: 123Kliens konzol:
[NotificationStore] Connected to Socket.IO[NotificationStore] New notification received via WebSocket: {...}[NotificationStore] About to show toast for notification: 13. Socket.IO Nem Működik
Szekció neve “3. Socket.IO Nem Működik”Ha a Socket.IO nem elérhető, a fallback automatikusan aktiválódik:
# Kliens konzol[NotificationStore] Connection error: ...[NotificationStore] WebSocket disconnected, polling for notificationsMegoldás: Nincs teendő, a rendszer automatikusan fallback módba vált.
4. Dev Módban Használd a Reload Funkciót
Szekció neve “4. Dev Módban Használd a Reload Funkciót”await notificationStore.reload();Socket.IO vs REST API Fallback
Szekció neve “Socket.IO vs REST API Fallback”| Szempont | Socket.IO (Elsődleges) | REST API (Fallback) |
|---|---|---|
| Késleltetés | Azonnali (< 100ms) | 30 másodperc |
| Hálózati forgalom | Minimális | Közepes (polling) |
| Megbízhatóság | Magas | Nagyon magas |
| Használat | Automatikus | Automatikus fallback |
| Aktiválás | Kapcsolódáskor | Socket.IO hiba esetén |
Fallback Mód Tesztelése
Szekció neve “Fallback Mód Tesztelése”1. Socket.IO Leállítása
Szekció neve “1. Socket.IO Leállítása”# Állítsd le a Socket.IO szervert# A kliens automatikusan fallback módba vált2. Konzol Üzenetek
Szekció neve “2. Konzol Üzenetek”[NotificationStore] Disconnected from Socket.IO[NotificationStore] WebSocket disconnected, polling for notifications3. Értesítés Küldése
Szekció neve “3. Értesítés Küldése”await sendNotification({ userId: 123, title: { hu: 'Teszt', en: 'Test' }, message: { hu: 'Fallback mód teszt', en: 'Fallback mode test' }, type: 'info'});
// Az értesítés 30 másodpercen belül megjelenikToast Értesítések Nem Jelennek Meg
Szekció neve “Toast Értesítések Nem Jelennek Meg”1. Ellenőrizd a Toaster Komponenst
Szekció neve “1. Ellenőrizd a Toaster Komponenst”<script> import { Toaster } from 'svelte-sonner';</script>
<Toaster />Megoldás: Add hozzá a Toaster komponenst a layout-hoz.
2. Ellenőrizd az Értesítés Típusát
Szekció neve “2. Ellenőrizd az Értesítés Típusát”Critical típusú értesítések nem jelennek meg toast-ként, hanem modal dialog-ban.
// ❌ Nem jelenik meg toastawait sendNotification({ userId: 123, title: 'Kritikus', message: 'Ez modal dialog-ban jelenik meg', type: 'critical'});
// ✅ Megjelenik toastawait sendNotification({ userId: 123, title: 'Info', message: 'Ez toast-ban jelenik meg', type: 'info'});3. Ellenőrizd a Konzolt
Szekció neve “3. Ellenőrizd a Konzolt”[NotificationStore] About to show toast for notification: 1[NotificationStore] Toast imported successfully[NotificationStore] Showing toast: { title: '...', message: '...', type: 'info' }Dev Mód Specifikus Problémák
Szekció neve “Dev Mód Specifikus Problémák”Probléma: Socket.IO Nem Fut Dev Módban
Szekció neve “Probléma: Socket.IO Nem Fut Dev Módban”Tünet: isConnected mindig false
Megoldás: A rendszer automatikusan fallback módba vált. Használd a reload() metódust manuális frissítéshez:
const notificationStore = getNotificationStore();await notificationStore.reload();Probléma: Toast Értesítések Nem Jelennek Meg Dev Módban
Szekció neve “Probléma: Toast Értesítések Nem Jelennek Meg Dev Módban”Tünet: Új értesítések nem jelennek meg automatikusan
Megoldás: A reload() metódus automatikusan megjeleníti a toast-ot az új értesítésekhez:
// notification-demo app-banif (import.meta.env.DEV) { setTimeout(() => { notificationStore.reload(); }, 500);}Probléma: Értesítések Nem Frissülnek Automatikusan
Szekció neve “Probléma: Értesítések Nem Frissülnek Automatikusan”Tünet: Új értesítések csak oldal frissítés után jelennek meg
Ok: Socket.IO nem fut, és a polling még nem indult el
Megoldás: Várj 30 másodpercet, vagy használd a reload() metódust:
await notificationStore.reload();Értesítések Nem Törlődnek
Szekció neve “Értesítések Nem Törlődnek”Ellenőrizd a Jogosultságokat
Szekció neve “Ellenőrizd a Jogosultságokat”Csak saját értesítéseket lehet törölni. Ellenőrizd, hogy a userId egyezik-e a bejelentkezett felhasználóval.
// ✅ Jó - saját értesítés törléseawait notificationStore.deleteNotification(myNotificationId);
// ❌ Hiba - más felhasználó értesítésének törléseawait notificationStore.deleteNotification(otherUserNotificationId);Ellenőrizd a Konzolt
Szekció neve “Ellenőrizd a Konzolt”# Sikeres törlés[API] Notification deleted: 123
# Sikertelen törlés[API] Error deleting notification: UnauthorizedBrowser Értesítések Nem Jelennek Meg
Szekció neve “Browser Értesítések Nem Jelennek Meg”1. Ellenőrizd az Engedélyeket
Szekció neve “1. Ellenőrizd az Engedélyeket”console.log('Notification permission:', Notification.permission);Lehetséges értékek:
granted— Engedélyezvedenied— Letiltvadefault— Még nem kérte el
2. Kérj Engedélyt
Szekció neve “2. Kérj Engedélyt”if (Notification.permission === 'default') { await Notification.requestPermission();}3. Ellenőrizd a Böngésző Támogatást
Szekció neve “3. Ellenőrizd a Böngésző Támogatást”if (!('Notification' in window)) { console.error('Browser does not support notifications');}Kritikus Értesítések Nem Jelennek Meg
Szekció neve “Kritikus Értesítések Nem Jelennek Meg”Ellenőrizd a CriticalNotificationDialog Komponenst
Szekció neve “Ellenőrizd a CriticalNotificationDialog Komponenst”<script> import CriticalNotificationDialog from '$lib/components/core/CriticalNotificationDialog.svelte';</script>
<CriticalNotificationDialog />Megoldás: Add hozzá a CriticalNotificationDialog komponenst a Desktop komponenshez.
Ellenőrizd a Típust
Szekció neve “Ellenőrizd a Típust”// ✅ Jó - critical típusawait sendNotification({ userId: 123, title: 'Kritikus', message: 'Ez modal dialog-ban jelenik meg', type: 'critical'});
// ❌ Rossz - error típus (toast-ban jelenik meg)await sendNotification({ userId: 123, title: 'Hiba', message: 'Ez toast-ban jelenik meg', type: 'error'});Teljesítmény Problémák
Szekció neve “Teljesítmény Problémák”Túl Sok Értesítés
Szekció neve “Túl Sok Értesítés”Ha túl sok értesítés van, a lista lassú lehet.
Megoldás: Használj pagination-t vagy töröld a régi értesítéseket:
// Összes értesítés törléseawait notificationStore.deleteAllNotifications();
// Vagy csak a régiek törlése (server-side)await notificationRepository.deleteOlderThan(30); // 30 napnál régebbiekPolling Túl Gyakori
Szekció neve “Polling Túl Gyakori”Ha a polling túl gyakori, növeld az intervallumot:
setInterval(() => { if (browser && !this.state.isConnected) { this.loadNotifications(); }}, 60000); // 60 másodperc helyett 30Hibakeresési Tippek
Szekció neve “Hibakeresési Tippek”1. Konzol Üzenetek Engedélyezése
Szekció neve “1. Konzol Üzenetek Engedélyezése”console.log('[NotificationStore] Connected:', this.state.isConnected);console.log('[NotificationStore] Notifications:', this.state.notifications);console.log('[NotificationStore] Unread count:', this.state.unreadCount);2. Network Tab Ellenőrzése
Szekció neve “2. Network Tab Ellenőrzése”Nyisd meg a böngésző DevTools Network tab-ját és szűrj a következőkre:
socket.io— WebSocket kapcsolat/api/notifications— REST API hívások
3. Redux DevTools
Szekció neve “3. Redux DevTools”Használd a Svelte DevTools-t az állapot követésére:
# Telepítésnpm install -D @sveltejs/vite-plugin-svelte-inspector4. Logging Szerver Oldalon
Szekció neve “4. Logging Szerver Oldalon”logger.info('[Socket.IO] Notification sent to user:', userId);logger.info('[Socket.IO] Unread count:', unreadCount);Gyakori Hibák és Megoldások
Szekció neve “Gyakori Hibák és Megoldások”| Hiba | Ok | Megoldás |
|---|---|---|
| Értesítések nem jelennek meg | Socket.IO nem fut | Várj 30s (fallback) vagy reload() |
| Toast nem jelenik meg | Toaster komponens hiányzik | Add hozzá a layout-hoz |
| Critical dialog nem jelenik meg | CriticalNotificationDialog hiányzik | Add hozzá a Desktop-hoz |
| Értesítések nem törlődnek | Jogosultság hiba | Csak saját értesítéseket törölhetsz |
| Browser értesítések nem működnek | Engedély hiányzik | Kérj engedélyt a felhasználótól |