Quiero cerrar el origen del evento después del cierre de sesión del usuario. Mis códigos están abajo. Cuando el usuario cierra la sesión, las notificaciones automáticas siguen llegando. Mi pregunta es ¿cómo cerrar el origen del evento?
const eventSource = new EventSource(`${environment.notificationUrl}/subscribe? token=${token}`); if (!token) { eventSource.removeAllEventListeners() eventSource.close() return; } eventSource.addEventListener('message', (event: any) => { ---- some codes here ---- }Técnicamente, los oyentes de eventos deben suscribirse dentro useEffect y seguir rastreando cuando el usuario cierra la sesión.
const NotificationSubscriptionManager = () => { const eventSource = new EventSource(`${environment.notificationUrl}/subscribe? token=${token}`); const subScribeToNotifications = () => { eventSource.addEventListener("message", (event: any) => { /// ---- some codes here ---- }); }; const unsubScribeToNotifications = () => { eventSource.removeAllEventListeners(); eventSource.close(); }; useEffect(() => { if (!token) { return unsubScribeToNotifications(); } // Subscribe to notification events subScribeToNotifications(); // Cancel all subscription when component unmount to avoid // memory leak return () => { unsubScribeToNotifications(); }; }, [token]); };