From Ape Wiki
Contents |
[edit] Événements APE JSF
Dans APE JSF il y a trois différentes sortes d'événements :
[edit] Événements Interne
Les événements interne sont déclenchés par le noyau APE et sont utilisés dans des cas particuliers. Exemples:
- Quand le noyau APE Core est chargé
- Quand le noyau APE est déconnecté (ou reconnecté) depuis un serveur APE
- Quand un nouveau pipe est créé
- ...
Les événements internes peuvent être capturés avec addEvent :
var client = new APE.Client(); client.load(); // Intercepte l'événement 'load'. Cet événement est déclenché lorsque le noyau est chargé et prêt à se connecter au serveur APE. client.addEvent('load', function() { // Appelle la fonction de démarrage du noyau pour se connecter au serveur APE client.core.start({"name":"Pooridge"}); }); //Écoute l'événement ready (prêt) pour savoir quand le client est connecté client.addEvent('ready', function() { console.log('Votre client est maintenant connecté'); });
Pour un liste de tous les événements internes, consultez la documentation d'événements
[edit] Les événements Raw
Chaque fois qu'APE JSF reçoit un raw depuis le serveur APE, un événement avec le nom du raw est déclenché. Les événement Raw peuvent être capturés avec onRaw. Les données reçues depuis le serveur APE sont passées dans un objet dans le premier argument de la fonction traitant l'événement.
//Connexion au serveur APE var client = new APE.Client(); client.load(); client.addEvent('load', function() { client.core.start({"name":"Pooridge"}); }); //Interception de l'événement raw login client.onRaw('login', function(data) { //enregistrement dans la console des données reçues depuis le serveur APE console.log(data); });
This forum nedeed shaking up and youve just done that. Great post!
[edit] Les événement Pipe
Les pipes on leur propre pile d'événements. C'est très utile si vous voulez écoutez des événement sur un pipe donné.
//Connexion au serveur APE var client = new APE.Client(); client.load(); client.addEvent('load', function() { client.core.start({"name":"Pooridge"}); }); client.onCmd('ready', function(data) { //Rejoindre deux canaux client.core.join(['testCanal', 'testCanal2']); }); //L'événement multiPipeCreate est déclenché quand vous rejoignez un canal client.addEvent('multiPipeCreate', function(pipe, options) { //On teste si le pipe est testChannel if (pipe.name == 'testChannel') { //On attache l'événement userJoin uniquement au pipe testCanal pipe.addEvent('userJoin', function(user, pipe) { console.log('Nouvel utilisateur sur le pipe testCanal'); }); //On déclenche l'événement 'samplePipeEvent' seulement sur ce pipe pipe.fireEvent('samplePipeEvent'); //On déclenche l'événement 'globalEvent' à la fois sur ce pipe et sur le noyau pipe.fireGlobalEvent('sampleGlobalEvent'); } });
[edit] Comment APE JSF détecte-t-il le pipe où il doit déclencher l'événement?
Quand le noyau APE reçoit des raws depuis le serveur APE, il vérifie la présence d'un identifiant pubid. Si la valeur de cet identifiant correspond à un pubid de pipe connu sur le noyau, l'événement est déclenché d'abord sur le noyau, puis sur le pipe correspondant. Cela fonctionne de la même façon pour les commandes.
[edit] Être informé de tous les raws et commandes
Depuis la version 1.0 et au-delà, un événement interne se déclenchera à chaque déclenchement d'événement de type raw ou cmd; 'onRaw' et 'onCmd' respectivement. Pensez-y comme onRaw('*', callback) et onCmd('*', callback), bien qu'ils soient écrit comme n'importe quel autre événement interne: addEvent('onRaw', callback)
//Reagir à tous les événement de type raw et cmd client.addEvent('onRaw', function(e) { console.log("Raw reçu") }); client.addEvent('onCmd', function(e) { console.log("Command envoyé") });


