Node.js fournit une librairie pour gérer les évènements : require ('event'). Les évènements sont le véritable centre nerveux d'une application asynchrone dans Node.js. Ils émettrent des signaux qui associés à des callback, orientent et cadencent le déroulement du programme.
Exemple:
Les opérations pour interroger une page WEB les suivantes:
1) Se connecter au serveur
2) Lancer la requête
3) Traiter les entêtes
4) Traiter le corps de la page
4) Se déconnecter
Pour ne pas bloquer le système entre chaque étape notamment celle qui attend la réponse du serveur, il est judicieux de programmer l'émission de signaux à des moments clés du cycle. Exemple 'j'ai reçu les entetes' , 'j'ai reçu les données de la page' et 'le serveur m'indique que c'est terminé'. pour chacun de ces signaux, il sera nécessaire de les 'ecouter' et de réagir en lançant les actions associées (callback) .
Ce système est composé de deux parties: l'emetteur de signaux (evenement) et le recepteur (listener) qui attend les évenements et lance les actions (callback ) prévues.
Les API de base de node.js sont livrées avec une gestion d’évènement, en charge pour le developpeur de réaliser la partie qui va traiter ces évènements.
(Exemple API HTTP: documentation ici )
Avec ici un exemple de récepteur sur l’évènement 'data':
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
Comment mettre en place son propre système d’évènement.La partie réception et traitement est la plus facile en voici un exemple:
Deux récepteurs sont mis à l'écoute.
La partie émission des signaux.
Node.js fournit la libraire 'event' et voici un exemple en coffeescript qui fonctionne avec le programme précédent:
Il ne faut pas grand chose ! C'est la magie de coffeescript et la puissance de node.js.
Pourquoi la magie de coffesscript ?
Parce en javascript écrit à la main, dans les règles de l'art, cela donne:
La premiere fonction sert à construire proprement des objets, sans effet de bord sur d'autres modules.
(copiée sur api_request )
Il est intéressant de voir que tous ces problèmes de constructeur sont pris en charge par coffescript comme le montre le javascript issu du programme coffee.
Aussi, coffescript n'est pas un simple générateur de code. Il met en place les bonnes pratiques et vous économise des lignes de code.