58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
document.addEventListener('DOMContentLoaded', (event) => {
|
|
const socket = io();
|
|
|
|
let isConnected = true;
|
|
|
|
function checkConnection() {
|
|
socket.emit('ping');
|
|
}
|
|
|
|
socket.on('pong', function () {
|
|
isConnected = true;
|
|
});
|
|
|
|
setInterval(() => {
|
|
if (!isConnected) {
|
|
window.location.reload();
|
|
}
|
|
isConnected = false;
|
|
checkConnection();
|
|
}, 3000);
|
|
|
|
socket.on('connect', () => {
|
|
isConnected = true;
|
|
});
|
|
|
|
socket.on('disconnect', () => {
|
|
isConnected = false;
|
|
window.location.reload();
|
|
});
|
|
|
|
// Function to check if the user is focused on the website
|
|
function isUserFocused() {
|
|
return document.hasFocus();
|
|
}
|
|
|
|
// Function to check if the user is in the same chat or group chat
|
|
function isUserInSameChat(sender, receiverId, groupId) {
|
|
const currentChatUserId = document.getElementById('current-chat-user-id');
|
|
const currentGroupId = document.getElementById('current-group-id');
|
|
return (currentChatUserId && currentChatUserId.value == receiverId) || (currentGroupId && currentGroupId.value == groupId);
|
|
}
|
|
|
|
socket.on('new_message', (data) => {
|
|
const { sender, message, timestamp, receiver_id } = data;
|
|
if (!isUserInSameChat(sender, receiver_id, null) || !isUserFocused()) {
|
|
// Display notification logic here
|
|
console.log(`New message from ${sender}: ${message}`);
|
|
}
|
|
});
|
|
|
|
socket.on('new_group_message', (data) => {
|
|
const { sender, message, timestamp, group_id } = data;
|
|
if (!isUserInSameChat(sender, null, group_id) || !isUserFocused()) {
|
|
// Display notification logic here
|
|
console.log(`New group message from ${sender}: ${message}`);
|
|
}
|
|
});
|
|
});
|