Manejando eventos personalizados con Node.js

Otras de las grandes características de Node.js es la facilidad con la que puedes trabajar con eventos y facilitar así la comunicación entre objetos.
Además, debes saber que muchos módulos de la API de Node.js (built-in modules) y externos heredan de EventEmitter.
Los eventos en Node.js son implementados por el módulo Events.
¿Como funcionan los eventos?
Para entender su funcionamiento es clave comprender los 2 actores principales que intervienen en este juego:
-
Emisor:
- Emite eventos de nombre.
- Registro y anulación de funciones de escucha.
-
Receptor:
- Recibe eventos de nombre.
- Gestión de la lógica necesaria.
El concepto es bastante simple, un emisor puede emitir un evento de nombres y uno, o varios, receptores lo escucharán para realizar las acciones necesarias dentro de la aplicación. Esa es la gran ventaja que aportan los eventos, puedes construir una aplicación reactiva de una forma más o menos sencilla.
Ejemplos:
-
Creación de emisor
const { EventEmitter } = require('events'); const myEmitter = new EventEmitter(); -
Registrar un receptor
myEmitter.on('sayHello', () => { console.log('hello'); } myEmitter.once('sayBye', () => { console.log('bye'); } -
Emitir evento
myEmitter.emit('sayHello'); -
Anular evento
myEmitter.emit('sayHello');
Métodos comunes de instancias EventEmitter
addListener('name')||on('name'): Añade receptor para dicho eventoremoveListener('name')||off('name'): Elimina receptor para dicho evento.once('name'): Añade un receptor para un evento una sola vez.emit('name'): Emite un evento con dicho nombre.listenerCount('name'): Devuelve el número de oyentes para un evento.rawListener('name'): Devuelve una copia del array de oyentes.