Métodos suscribe y publish en PubSub

| Última modificación: 8 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

El patrón PubSub nos permite comunicar eventos entre dos piezas de nuestro proyecto a través de un tercer elemento conocido como event bus. Bajo este patrón, las dos piezas a comunicar toman el rol de suscriber y publisher. En este post, te enseñaremos qué son y cómo funcionan los métodos suscribe y publish en PubSub para que los implementes en tus proyectos.

¿Qué son los métodos suscribe y publish en PubSub?

En nuestro post sobre implementar patrón PubSub con clase en JavaScript, te hemos mostrado el código necesario para implementar este patrón usando un nuevo módulo y la clase pubsub. Dentro de esta clase, además de crear un índice de eventos en el patrón PubSub, hemos insertado dos métodos que definen todo el funcionamiento de este patrón: los métodos suscribe y publish en PubSub.

Para conocer más sobre este patrón y sus usos en aplicaciones, te invitamos a leer el artículo publisher-suscriber pattern en learn.microsoft.com.

Como su nombre indica, los métodos suscribe y publish en PubSub se encargan de definir las acciones que podrán ejecutar las piezas suscriber y publisher. A continuación, te mostramos el código requerido para crear estos métodos y te explicamos brevemente cómo funcionan.

¿Cómo funcionan los métodos suscribe y publish en PubSub?

Los métodos suscribe y publish en PubSub requieren algunas líneas de código para funcionar. A continuación, te explicamos qué código contiene cada método.

Suscribe

El método suscribe se crea insertando las siguientes líneas de código dentro de la clase PubSub:

suscribe (topic, listener) {

if (!this.hOP.call (this.topics, topic)) this.topics[topic] = [ ];

var index = this.topics [topic].push (listener) -1;

return {

remove: function ( ) {

delete this.topics [topic][index];

},

};

}

Como puedes ver, el método suscribe maneja los parámetros topic y listener, que deben ser definidos al controlar mensajes con PubSub. Dentro del método, tenemos un array con todos los eventos (declarado en la línea if). Luego, en la línea var index, estamos guardando, por cada posición de ese array, la función que se va a ejecutar cuando ese evento llegue.

¿Cómo se logra esto? Pues en realidad, el código del método suscribe contiene un array bidimensional, donde tenemos, por una parte, los eventos y, por otra, todas las funciones que se van a ejecutar sobre aquellos eventos. Esto es muy útil cuando queremos que más de una pieza reaccione a un solo evento. Por ejemplo, varias piezas reaccionan a un log out efectuado por el usuario: una limpia los datos, otra actualiza la visualización al log in, etc. Por ello, se inserta un array bidimensional, porque por cada evento puede haber n funciones a ejecutar.

Ten presente que, aunque en nuestro código estamos utilizando la sintaxis de JavaScript, este manejo de los métodos suscribe y publish en PubSub es completamente estándar. Es decir, puedes encontrar la alternativa a Java, Python y otros lenguajes de programación. Sin embargo, en todas las alternativas, la lógica de implementación es la misma.

Publish

Entre los métodos suscribe y publish en PubSub, el método de publicar es el más sencillo. Como verás en las líneas de código que te mostramos a continuación, este método tan solo inserta dentro del array creado el evento que está llegando. De esta manera, el suscriber se podrá enterar y reaccionar en consecuencia.

publish (topic, info) {

if (!this.hOP.call (this.topics, topic)) return;

this.topics [topic].forEach (function (item) {

item (info != undefined ? info : { });

});

}

}

Ten presente que el código de estos métodos, así como del patrón en general, no es lo que realmente importa a la hora de programar. En realidad, es tu habilidad para elegir el patrón adecuado para resolver un problema lo que será útil en tu día a día.

¿Quieres seguir aprendiendo?

Tras leer este post, sabes exactamente qué son los métodos suscribe y publish en PubSub y cómo implementarlos en tu código. Sin embargo, ¡todavía queda mucho por aprender del mundo del desarrollo web! Por ello, te invitamos a ser parte de nuestro Desarrollo Web Full Stack Bootcamp, un espacio de formación intensiva donde aprenderás todo lo necesario para convertirte en un experto de este mundo en pocos meses. ¿Quieres seguir aprendiendo con nosotros para destacar en el sector IT? ¡Matricúlate ahora!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado