Layanan Pub/Sub Javascript

Mar 18 2023
Apa sebenarnya itu? Layanan Pub/Sub adalah pola desain yang memungkinkan untuk berkomunikasi antara berbagai modul aplikasi web tanpa bergantung satu sama lain. Ini memungkinkan penerbit untuk mengirim pesan ke pelanggan tanpa harus tahu apa-apa tentang mereka.

Apa sebenarnya itu?

Layanan Pub/Sub adalah pola desain yang memungkinkan untuk berkomunikasi antara berbagai modul aplikasi web tanpa bergantung satu sama lain. Ini memungkinkan penerbit untuk mengirim pesan ke pelanggan tanpa harus tahu apa-apa tentang mereka. Penerbit dapat memublikasikan pesan ke suatu topik, dan pelanggan dapat berlangganan ke topik tersebut untuk menerima pesan dari topik tersebut.

Jenis desain ini sebagian besar berguna untuk membangun aplikasi web real-time. Misalnya, jika kita sedang membangun aplikasi obrolan, kita dapat menggunakan layanan Pub/Sub untuk mengirim pesan dari satu pengguna ke pengguna lainnya secara real-time. Ini dapat dicapai karena layanan Pub/Sub memungkinkan untuk menangani acara secara asinkron.

Bagaimana cara kerjanya ?

Layanan Pub/Sub biasanya terdiri dari tiga komponen utama:

  1. Penerbit : Penerbit bertanggung jawab untuk mengirim pesan ke suatu topik. Ini bisa menjadi bagian dari aplikasi yang perlu mengirim pesan.
  2. Topik : Di mana pesan dipublikasikan. Pelanggan dapat berlangganan topik untuk menerima pesan.
  3. Pelanggan : Pelanggan bertanggung jawab untuk menerima pesan dari suatu topik. Ini bisa menjadi bagian mana saja dari aplikasi yang perlu menerima pesan.
  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);
    

Mari fokus pada metode berlangganan.

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

Layanan Publikasikan

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

Mengapa kita harus menggunakannya?

Kopling longgar: Salah satu keuntungan terbesar menggunakan sistem terbitkan/berlangganan adalah decoupling longgar. Seperti yang sudah kita bahas, penerbit tidak tahu tentang pelanggan.

Skalabilitas: Ini menyediakan cara untuk menskalakan sistem ke volume yang sangat besar. Ini karena pola dapat menangani pengiriman pesan secara asinkron, yang berarti tidak memblokir bagian lain dari aplikasi.

Selamat PubSub ing!!!!