Aller au contenu

Cycle de vie d'une session

Une session regroupe la visite d’un navigateur sur ton application, tous onglets confondus. Chaque page ouverte pendant la session (chargement, rechargement, navigation, nouvel onglet) y ajoute une window, rejouée sur la même timeline.

belvdr.startSession() // après le consentement, à chaque chargement de page
  • Rien avant startSession() : aucun enregistrement et rien d’écrit dans le navigateur. C’est l’appel à faire une fois le consentement obtenu (Installation).
  • Reprise : startSession() reprend la session active du navigateur (dernière interaction il y a moins de 30 minutes, début il y a moins de 24 heures) dans une nouvelle window, sinon il en crée une. Recharger la page ou ouvrir un second onglet continue donc la même session.
  • Nouvelle session forcée : startSession({ forceNew: true }) en démarre une nouvelle dans tous les cas ; les autres onglets basculent dessus.
  • Utilisateur déjà connecté : startSession({ userId: 'user_42' }) démarre et identifie en un seul appel.

Après 30 minutes sans interaction (clic, saisie, défilement, mouvement de souris…) ou 24 heures de session, la prochaine interaction démarre une nouvelle session, qui commence par une capture complète de la page. Entre-temps, rien n’est enregistré.

Un event custom n’est pas une interaction : il ne prolonge pas la session et n’en recrée pas.

belvdr.stopSession() // retrait du consentement

stopSession() arrête l’enregistrement dans tous les onglets (aussitôt grâce à l’événement storage, au plus tard au prochain envoi), envoie les derniers événements et efface la session. L’identifiant du navigateur (distinctId) est conservé. Le prochain startSession() démarre une nouvelle session.

À partir de startSession(), le SDK utilise deux entrées :

Stockage Clé Contenu
localStorage belvdr:<clé publique> État partagé entre onglets : distinctId, session en cours, dernière activité
sessionStorage belvdr:tab:<clé publique> Identifiant de l’onglet (tabId), envoyé avec chaque envoi
  • L’identifiant de l’onglet survit à un rechargement ou à une navigation : le lecteur regroupe ainsi les pages par onglet. Un onglet dupliqué, qui reçoit une copie du sessionStorage, prend un nouvel identifiant.
  • Si le localStorage est inaccessible, la page est enregistrée quand même, sans reprise ni partage entre onglets. Sans sessionStorage, les envois ne portent pas d’identifiant d’onglet.
  • Les clés d’avant le renommage du SDK en belvdr (belvedere:<clé publique>, belvedere:tab:<clé publique>) sont reprises au premier accès du SDK à son stockage, puis effacées : un visiteur garde son identité et sa session à travers la mise à jour.