// Include SweetAlert2 in your HTML file for beautiful popups // let inactivityTime = 0; // Inactivity counter in minutes const maxInactivityTime = 5; // Maximum inactivity time in minutes // WebSocket connection const socket = new WebSocket("ws://localhost:8082"); // WebSocket event listeners socket.onopen = () => { console.log("WebSocket connection established."); }; socket.onmessage = (event) => { console.log("Message from server:", event.data); }; socket.onerror = (error) => { console.error("WebSocket error:", error); }; socket.onclose = () => { console.log("WebSocket connection closed."); }; // Function to reset inactivity timer function resetInactivityTimer() { inactivityTime = 0; } // Function to show inactivity popup function showInactivityPopup() { Swal.fire({ title: "Inactivity Detected", text: "You have been inactive for more than 5 minutes. Do you want to stay logged in?", icon: "warning", showCancelButton: true, confirmButtonText: "Stay Logged In", cancelButtonText: "Log Out", }).then((result) => { if (result.isConfirmed) { resetInactivityTimer(); // Reset timer if user chooses to stay logged in } else { logoutUser(); // Logout user if they choose to log out } }); } // Function to log out the user function logoutUser() { Swal.fire({ title: "Logged Out", text: "You have been logged out due to inactivity.", icon: "info", confirmButtonText: "OK", }).then(() => { // Add your logout logic here, e.g., redirect to login page or call logout API window.location.href = "/logout"; // Example: Redirect to logout page }); } // Event listeners to detect user activity document.addEventListener("mousemove", resetInactivityTimer); document.addEventListener("keydown", resetInactivityTimer); document.addEventListener("mousedown", resetInactivityTimer); document.addEventListener("mouseup", resetInactivityTimer); // Timer to check inactivity every minute setInterval(() => { inactivityTime++; if (inactivityTime >= maxInactivityTime) { showInactivityPopup(); } }, 60000); // 60000 ms = 1 minute