From Ape Wiki

Jump to: navigation, search

Contents

[edit] Sessions APE

APE dispose d'une caractéristique sympa appelée les sessions qui vous permet de rendre votre application "persistante". Lorsqu'un utilisateur navigue sur votre site ou recharge la page, la session restaurera votre environnement d'application APE.

[edit] Comment activer les sessions

Si vous utilisez APE JSF construit avec la session, utilisez apeCoreSession.js au lieu de apeCore.js.

Si vous utilisez APE JSF via le chargement de fichiers multiples, ajoutez cette ligne à votre fichier de configuration:

APE.Config.scripts.push(APE.Config.baseUrl + 'Core/Session.js');

[edit] Comment les sessions fonctionnent

Peut-être aurez-vous déjà noté le numéro précédant le sous-domaine ape dans les requêtes envoyées au serveur APE:

http://2.ape.ape-project.org/?
-------^

Ce numéro est appelé fréquence. Chaque fois qu'APE JSF est chargé, la fréquence est incrémentée. Cela permet au serveur APE de détecter que l'utilisateur a chargé une nouvelle page.

  • Si APE JSF est chargé sans les sessions, la fréquence est uniquement utilisée pour contourner certaines limitations de navigateur.
  • Si APE JSF est charge avec les sessions, cela demande au serveur APE la session de l'utilisateur au lieu d'envoyer une commande de connexion quand start(); est appelé.

Le serveur envoie alors les multi et mono pipes auxquels l'utilisateur était connecté, ainsi APE JSF pourra déclencher les événements multiPipeCreate et uniPipeCreate.

Hello. And Bye.

[edit] Un exemple avec la session

Cet exemple connecte un utilisateur au serveur APE, rejoint un canal et enregistre une variable de session appelée key 1 avec la valeur value1:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
    <head>  
        <script type="text/javaScript" src="Clients/JavaScript.js"></script>
        <script type="text/javaScript" src="Demos/config.js"></script>
    </head>
 
    <body>
        <script type="text/javascript">
        //Utilisation d'APE JSF construit avec la session
        APE.Config.scripts = [APE.Config.baseUrl + '/Build/uncompressed/apeCoreSession.js'];
 
        var client = new APE.Client();
 
        //Chargement du client APE et souscription au canal 'test'
        client.load({'channel':'test'});
 
        client.addEvent('load', function() {
                //core.options.restore est vrai si la session est active
                if (client.core.options.restore) {
                    //Appelle start(); sans argument demandera une session utilisateur au serveur APE
                    client.core.start();
                } else {
                    //Ce n'est pas une restauration de session, on demande son nom à l'utilisateur
                    client.core.start({'name':prompt('nom?')});
                }
        });
 
        client.addEvent('ready', function() {
            if (client.core.options.restore) {
                //Si c'est une restauration de session, demande au serveur APE pour une variable de session 'key1'
                client.core.getSession('key1', function(resp) {
                    console.log('Réception session - la valeur de data. key1 est : ', resp.data.sessions.key1);
                });
            } else {
                //Enregistrement de la variable de session key1 sur le serveur
                console.log('enregistrement de la variable de session data, key1 sur le serveur');
                client.core.setSession({'key1':'value1'});
            }
        });
 
        client.addEvent('multiPipeCreate', function(pipe) {
                console.log('Nouveau pipe ' + pipe.name);
        });
        </script> 
    </body>
</html>