This commit is contained in:
Paramita Pahari 2025-04-13 15:42:13 +00:00
parent df1060b3b0
commit 2e1b507f87

75
JS Normal file
View File

@ -0,0 +1,75 @@
// Include SweetAlert2 in your HTML file for beautiful popups
// <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
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