Usługa Javascript Pub/Sub

Mar 18 2023
Co to dokładnie jest? Usługa Pub/Sub to wzorzec projektowy, który umożliwia komunikację między różnymi modułami aplikacji internetowej bez zależności od siebie. Pozwala wydawcom wysyłać wiadomości do subskrybentów bez konieczności posiadania o nich jakiejkolwiek wiedzy.

Co to dokładnie jest?

Usługa Pub/Sub to wzorzec projektowy, który umożliwia komunikację między różnymi modułami aplikacji internetowej bez zależności od siebie. Pozwala wydawcom wysyłać wiadomości do subskrybentów bez konieczności posiadania o nich jakiejkolwiek wiedzy. Wydawcy mogą publikować wiadomości w temacie, a subskrybenci mogą subskrybować ten temat, aby otrzymywać wiadomości z tych tematów.

Ten rodzaj projektowania jest głównie przydatny do tworzenia aplikacji internetowych działających w czasie rzeczywistym. Na przykład, jeśli tworzymy aplikację do czatu, możemy użyć usługi Pub/Sub do wysyłania wiadomości od jednego użytkownika do drugiego w czasie rzeczywistym. Można to osiągnąć, ponieważ usługa Pub/Sub pozwala na asynchroniczną obsługę zdarzeń.

Jak to działa ?

Usługa Pub/Sub zazwyczaj składa się z trzech głównych elementów:

  1. Wydawca : Wydawca jest odpowiedzialny za wysyłanie wiadomości do tematów. Może to być dowolna część aplikacji, która musi wysyłać wiadomości.
  2. Temat : miejsce, w którym publikowane są wiadomości. Subskrybenci mogą subskrybować temat, aby otrzymywać wiadomości.
  3. Subskrybent : Subskrybent jest odpowiedzialny za otrzymywanie wiadomości z tematu. Może to być dowolna część aplikacji, która musi odbierać komunikaty.
  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);
    

Skupmy się na metodzie subskrypcji.

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);
    }
  }
}

Usługa publikowania

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

Dlaczego powinniśmy go używać?

Luźne powiązanie: Jedną z największych zalet korzystania z systemu publikowania/subskrybowania jest luźne powiązanie. Jak już mówiliśmy, wydawcy nie wiedzą o subskrybentach.

Skalowalność: zapewnia sposób skalowania systemu do ogromnej objętości. Dzieje się tak dlatego, że wzorzec może obsługiwać dostarczanie komunikatów asynchronicznie, co oznacza, że ​​nie blokuje innych części aplikacji.

Miłego PubSubowania!!!!