Je souhaite déconnecter les utilisateurs de socket.io après 2 heures d'inactivité et leur donner un bouton invite/reconnecter.Socket.io déconnexion automatique après 2 heures d'inactivité ne fonctionne pas
Tout d'abord, j'ai mis reconnexion automatique à false et une forcedc variable:
var socket = io.connect('https://coinchat.org:443',{secure: true, reconnect: false});
var forcedc = false;
Ensuite, j'ai un temps pour inactivité qui est remis à zéro quand on déplace la souris:
$("body").mousemove(function(e){
clearTimeout(dcTimeout);
dcTimeout = setTimeout(function(){
if(!forcedc){
forcedc = true;
socket.disconnect();
$("#dcmodal").modal('show');
}
}, 1000 * 60 * 60 * 2);
});
Fondamentalement, forcedc signifie que l'utilisateur a été déconnecté en raison de l'inactivité et que le navigateur ne doit pas actualiser la page pour essayer de se reconnecter. Si forcedc est false, cela signifie que l'utilisateur a été déconnecté en raison de problèmes réseau/redémarrages du serveur et que le navigateur doit actualiser la page pour se reconnecter.
Maintenant, quand la prise est déconnecté:
socket.on("disconnect", function(data){
if(!forcedc){
setTimeout(function(){document.location.reload(true)}, 1000 + Math.random()*12750);
}
});
La page doit rafraîchir si forcedc est faux. Cependant, la page se rafraîchit même si l'utilisateur a déjà été "déconnecté" en raison d'une inactivité (je sais que forcedc = true a été exécuté, car je vois le modal déconnecté).
Qu'est-ce que je fais mal?
Bonjour, j'ai écrit une petite application avec votre code et cela fonctionne comme. Si vous ne pouvez pas en partager un peu plus (ou si vous voulez partager mon propre extrait), je ne pense pas un chiffre là où le bug est. – danielepolencic
Que faire si vous changez * if (! Forcedc) {* en if (forcedc === false) {* – Krasimir
Cela fonctionne comme prévu pour moi. Est-ce le code exact que vous testez? – user568109