Serviço Javascript Pub/Sub

Mar 18 2023
O que exatamente é isso? Um serviço Pub/Sub é um padrão de design que permite a comunicação entre diferentes módulos de um aplicativo da web sem depender um do outro. Ele permite que os editores enviem mensagens aos assinantes sem precisar saber nada sobre eles.

O que exatamente é isso?

Um serviço Pub/Sub é um padrão de design que permite a comunicação entre diferentes módulos de um aplicativo da web sem depender um do outro. Ele permite que os editores enviem mensagens aos assinantes sem precisar saber nada sobre eles. Os editores podem publicar mensagens em um tópico e os assinantes podem assinar esse tópico para receber mensagens desses tópicos.

Esse tipo de design é mais útil para criar aplicativos da Web em tempo real. Por exemplo, se estivermos construindo um aplicativo de bate-papo, podemos usar um serviço Pub/Sub para enviar mensagens de um usuário para outro em tempo real. Isso pode ser alcançado porque o serviço Pub/Sub permite lidar com eventos de forma assíncrona.

Como funciona ?

Um serviço Pub/Sub normalmente consiste em três componentes principais:

  1. Editor : Um editor é responsável por enviar mensagens para um tópico. Pode ser qualquer parte do aplicativo que precise enviar mensagens.
  2. Tópico : É onde as mensagens são publicadas. Os assinantes podem se inscrever no tópico para receber mensagens.
  3. Assinante : Um assinante é responsável por receber mensagens de um tópico. Pode ser qualquer parte do aplicativo que precise receber mensagens.
  4. const subscribers = {};
    
    function publish(topic, message) {
      if (!Array.isArray(subscribers[topic])) {
        return;
      }
      subscribers[topic].forEach(
        (callback) => callback(message)
      );
    }
    
    function subscribe(topic, callback) {
      if (!Array.isArray(subscribers[topic])) {
        subscribers[topic] = [];
      }
      const index = subscribers[topic].push(callback) - 1;
      return {
        unsubscribe() {
          subscribers[topic].splice(index, 1);
        }
      }
    }
    
    export { publish, subscribe };
    
    
    // Example usage
    
    // Subscribing to a new topic
    const subscription = pubSub.subscribe("event", data => {
      console.log(`"event", was published with this data: ${data.msg}`);
    })
    
    // unsubscribing
    subscription.unsubscribe();
    
    // Publishing a message
     const message = {
       msg: "Publishing a new topic"
     };
     pubSub.publish("event", message);
    

Vamos nos concentrar no método de assinatura.

function subscribe(topic, callback) {
  if (!Array.isArray(subscribers[topic])) {
    subscribers[topic] = [];
  }
  const index = subscribers[topic].push(callback) - 1;
  return {
    unsubscribe() {
      subscribers[topic].splice(index, 1);
    }
  }
}

O serviço Publicar

function publish(topic, message) {
  if (!Array.isArray(subscribers[topic])) {
    return;
  }
  subscribers[topic].forEach(
    (callback) => callback(message)
  );
}

Por que devemos usá-lo?

Acoplamento frouxo: uma das maiores vantagens de usar o sistema de publicação/assinatura é o desacoplamento frouxo. Como já discutimos, os editores não sabem sobre os assinantes.

Escalabilidade: fornece uma maneira de dimensionar o sistema para um volume enorme. Isso ocorre porque o padrão pode manipular a entrega de mensagens de forma assíncrona, o que significa que ele não bloqueia outras partes do aplicativo.

Feliz PubSubing!!!!