24 février 2015
publié par 
Les sites dynamiques conservent une session active sur le serveur qui les héberge, pour tous les internautes connectés. Ce mécanisme est déjà détaillé dans le billet suivant :

Un complément d'information sur ce thème est nécessaire. En effet une nouveauté de WEBDEV incluse à partir de la version 19, reposant sur une possibilité de HTML 5, apporte une nouvelle solution pour les sites qui doivent conserver une session constamment active sur le serveur. Si précédemment l'utilisation d'un timer pouvait s'imposer, il est maintenant possible de l'éviter.

Dans la description d'un projet une option "maintenir automatiquement les sessions ouvertes (uniquement HTML 5)" est proposée :


Avec l'option "maintenir automatiquement les sessions ouvertes (uniquement HTML 5)" au niveau du projet, les sessions sont maintenues actives tant que la communication avec le navigateur fonctionne, donc tant qu'une page du site est affichée dans le navigateur de l'internaute : cela éviter un timeout des sessions.

D'autre part les pages disposent d'une option "Rafraîchir les données de la page depuis le serveur" dans le volet "Détail" de la description :


L'option "Rafraîchir les données de la page depuis le serveur" permet d'envoyer depuis le code serveur des données vers le navigateur sans timer dans le navigateur. Un code Ajax serveur et un code navigateur sont automatiquement ajoutés dans la page :


Le code serveur est appelé automatiquement en boucle, en utilisant comme fréquence la "période de rafraîchissement" indiquée dans la description de la page. Il n'est plus nécessaire d'avoir d'une procédure navigateur appelée par Timer, pour faire appel à la fonction AjaxExécute). Par exemple le code serveur "Rafraîchissement des données" consulte une information de la base de données, et met à jour si besoin des champs de la page. Si une mise à jour est faite, le code navigateur "Après rafraîchissement" est appelé. Cela permet "côté navigateur", de pouvoir notifier l'utilisateur du site qu'une modification a été faite, par exemple avec un "toast" de notification (cf. ToastAffiche). Le code serveur "Rafraîchissement des données" peut également effectuer une action sans provoquer l'appel du code navigateur "Après rafraîchissement", il suffit pour cela de "RENVOYER Faux" à la fin du traitement.

A noter que l'administrateur de WEBDEV permet de voir l'activité provoquée par l'appel du code "Rafraîchissement des données : le délai "Inactif depuis" montré dans la liste des connexions au site (volet "Connexions" de l'administrateur), est remis à zéro à chaque appel automatique du code.
___________________________________

Ces options utilisent la technologie "Server-sent events" (SSE), qui permet à la session (côté serveur) d'initier la transmission de données vers le navigateur une fois que la connexion initiale a été mise en place.

Cette technologie permet de ne pas consommer de bande passante inutile avec un timer qui ferait des demandes "pour rien" au serveur. De plus sans timer "côté du navigateur" il n'y a pas d'activité de ce dernier, donc son utilisation du CPU est réduite. C'est donc particulièrement intéressant pour les sites visités depuis des smartphones ou tablettes : réduction de la consommation du forfait data, et de la batterie.

Attention, reposant sur HTML 5, l'utilisation de cette solution nécessite de vérifier au préalable que tous les utilisateurs du sites pourront en bénéficier. Certains navigateurs peuvent ne pas supporter ce mécanisme, certaines stratégies de sécurité et antivirus peuvent bloquer des protocoles.




< Retour

3 commentaires

CONTOZ
04/12/2017 - 16:49 - Répondre
Bonjour, Il semblerait que cette méthode ne fonctionne pas avec Internet Explorer Version 11.0.9600.18837. J'ai mis 30 secondes de rafraîchissement comme dans l'exemple, et une timeout de session à 45 secondes. Cela fonctionne très bien sur Firefox, Google Chrome. En revanche, sur Internet Explorer, le rafraîchissement ne se fait pas, et donc au bout de 45 secondes d'inactivité, la session s'interrompt. Avez-vous des conseils pour régler ce problème ? Version WebDev 22, 22.0.131.0 : 30F220073h Merci d'avance.

Guillaume Bayle
04/12/2017 - 17:45 - Répondre
Bonjour, malheureusement IE11 n'est pas dans les navigateurs supportant ces possibilités (cf conditions d'utilisation de la page https://doc.pcsoft.fr/fr-FR/?2030067). Un maintient de session compatible avec les navigateurs anciens navigateurs impose un timer. Bons développements !

CONTOZ
05/12/2017 - 08:19 - Répondre
Bonjour, Merci beaucoup pour ces informations et aussi rapidement ! J'avais déjà la piste du timer mais j'ai au moins l'explication précise sur l'obligation d'utiliser un timer avec les anciens navigateurs. Encore merci !

Publier un commentaire : 
Votre adresse email ne sera pas publiée


© 2019 PC SOFT. Tous droits réservés. Réalisé  avec WEBDEV