IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

D�tecter l'inactivit� d'un utilisateur de mani�re �l�gante (requestIdleCallback ?)


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Homme Profil pro
    Electron libre since 80's
    Inscrit en
    Juillet 2016
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activit� : Electron libre since 80's
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 92
    Par d�faut D�tecter l'inactivit� d'un utilisateur de mani�re �l�gante (requestIdleCallback ?)
    Bonjour,

    Je cherche � delogger (chose que je sais faire) un utilisateur apr�s x minutes d'activit�.

    requestIdleCallback me semble le plus �l�gant (= utilise le moins de ressources) oppos� � des timer et event clavier, souris... mais je m'y perds malgr� ce que j'ai pu voir sur le net.

    Des id�es ? Ah, pas de jQuery SVP, j'suis Vanilla JS !

    Dans un 1er temps, je cherche � faire des choses simples (envoyer un mail au chef pour d�noncer l'utilisateur :-), sauvegarder le travail en cours puis delogger).

    Apr�s (enfin si j'ai bien compris comment �a fonctionne), j'envisagerai du plus lourd (miner des bitcoins, calculer l'�ge du capitaine, combien de temps le f�t met-il pour se refroidir apr�s que l'obus a �t� tir� ?, pourquoi � 42 � est la r�ponse � la Grande Question de l'Univers).

    Merci par avance.

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    Le m�thode client ne semble pas s�cure.
    Un timer cot� client qui lancerait un ajax de d�connexion laisse la possibilit� � l'utilisateur d'intervenir sur le timer.
    Perso j'aborderais cela plut�t cot� serveur en utilisant les sessions.
    https://www.codegrepper.com/code-exa...+session+timer
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    D�tails du profil
    Informations personnelles :
    �ge : 55
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par d�faut
    j'opterai pour un mix des 2 :

    un appel ajax qui fait office de "heartbeat" pour signaler au serveur que l'on est toujours actif (pour les sessions php)
    et un timeout de session php

    le probleme avec la solution 100% php, c'est que l'utilisateur peut etre en train de lire la page... en soit, il est toujours "actif", mais le serveur ne le sait pas

    pour ta solution requestIdleCallback, ce n'est pas ce que tu crois : cette methode permet juste de lancer une tache quand le navigateur a fini ses calculs, et non pas quand il est "idle" comme nous l'entendons...
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de D�veloppez !

  4. #4
    Membre �clair�
    Homme Profil pro
    Electron libre since 80's
    Inscrit en
    Juillet 2016
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activit� : Electron libre since 80's
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 92
    Par d�faut
    Merci de vos contributions.

    La m�thode window.requestIdleCallback() m�morise une fonction qui sera appel�e lorsque le navigateur n'aura plus aucune autre t�che en cours.
    => d'o� ma m�prise dans l'interpr�tation

    Server side : ce n'est pas une solution pour moi.

    En fait, l'utilisateur r�cup�re une liste de produits et les pr�pare (client side) sans plus d'interaction avec le serveur (sauf si n�cessaire) pour garantir les temps de r�ponse. Tout est stock� en localStorage.
    Je veux utiliser les temps morts client side pour mettre � jour le serveur (Ajax) m�me si tous les produits ne sont pas pr�par�s et �ventuellement d�connecter l'utilisateur (server side) par ex s'il est parti d�jeuner.

    J'essaie de trouver une fa�on moins bourrine que des timers.

  5. #5
    Membre �clair�
    Homme Profil pro
    Electron libre since 80's
    Inscrit en
    Juillet 2016
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activit� : Electron libre since 80's
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 92
    Par d�faut
    Bon, j'ai choisi cela :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function autoTimer()
    {	let t;
    	window.onload=autoTimerReset();
    	window.onmousemove=autoTimerReset();
    	window.onmousedown=autoTimerReset();	
    	window.ontouchstart=autoTimerReset();
    	window.onclick=autoTimerReset();
    	window.onkeypress=autoTimerReset();
    	window.addEventListener('scroll',autoTimerReset,true);
        function autoTimerAction()
    	{	let fct=localStorage.getItem("function")
    		alert("logout");
    		if (fct==_TAB_PICKMAIN || fct==_TAB_PICKEXT)
    		{	// Commande en cours de préparation
    			autoTimer();
    			// Action : sauvegarder l'état de la commande (Ajax)
    		}
    		else if (fct!=_CMD_LOGOUT)
    		{	// Action : se déconnecter
    		}
        }
        function autoTimerReset()
    	{	clearTimeout(t);
    		t=setTimeout(autoTimerAction,_LOGOUT_TIME);
        }
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. D�tecter la langue de l'utilisateur
    Par Orian dans le forum G�n�ral Java
    R�ponses: 1
    Dernier message: 09/03/2008, 07h50
  2. [Strat�gie] D�tecter l'inactivit� de l'utilisateur
    Par lambdacrash dans le forum G�n�ral Java
    R�ponses: 3
    Dernier message: 26/11/2007, 14h11
  3. Inactivit� d'un utilisateur
    Par yenGo dans le forum Langage
    R�ponses: 7
    Dernier message: 05/04/2006, 14h46
  4. D�tecter l'inactivit� du modem
    Par smyley dans le forum Langage
    R�ponses: 5
    Dernier message: 02/11/2005, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo