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.
Mise à jour 14/12/2020 Cette solution de maintien des sessions peut être pénalisante en terme de performances pour certains sites. C'est dépendant des navigateurs et de la gestion de la mémoire et des processus par le serveur et le serveur web. Cette solution doit donc être retenue au cas par cas, après validation par des tests de montée en charge.
Mise à jour 7/6/2021
L'expérience montre un support assez aléatoire de la technologie "Server-sent events" (SSE) par les navigateurs. Elle passe en version 26 en option de compatibilité :
Elle reste donc applicable lorsque vous maîtrisez les navigateurs utilisés, dans un intranet sécurisé par exemple, et si elle convient aux besoins du site. Dans le cas d'un site tout public, la solution Timer + appel Ajax sera dans le cas général à privilégier. |