जावास्क्रिप्ट पब/उप सेवा

Mar 18 2023
यह वास्तव में क्या है? एक पब/उप सेवा डिज़ाइन पैटर्न है जो एक दूसरे पर निर्भर हुए बिना वेब एप्लिकेशन के विभिन्न मॉड्यूल के बीच संवाद करने में सक्षम बनाता है। यह प्रकाशकों को ग्राहकों के बारे में कुछ भी जाने बिना उन्हें संदेश भेजने की अनुमति देता है।

यह वास्तव में क्या है?

एक पब/उप सेवा डिज़ाइन पैटर्न है जो एक दूसरे पर निर्भर हुए बिना वेब एप्लिकेशन के विभिन्न मॉड्यूल के बीच संवाद करने में सक्षम बनाता है। यह प्रकाशकों को ग्राहकों के बारे में कुछ भी जाने बिना उन्हें संदेश भेजने की अनुमति देता है। प्रकाशक किसी विषय पर संदेश प्रकाशित कर सकते हैं, और ग्राहक उन विषयों से संदेश प्राप्त करने के लिए उस विषय की सदस्यता ले सकते हैं।

इस प्रकार का डिज़ाइन रीयल-टाइम वेब एप्लिकेशन बनाने के लिए अधिकतर उपयोगी होता है। उदाहरण के लिए, यदि हम एक चैट ऐप बना रहे हैं, तो हम वास्तविक समय में एक उपयोगकर्ता से दूसरे उपयोगकर्ता को संदेश भेजने के लिए एक पब/उप सेवा का उपयोग कर सकते हैं। इसे प्राप्त किया जा सकता है क्योंकि पब/उप सेवा घटनाओं को अतुल्यकालिक रूप से संभालने की अनुमति देती है।

यह कैसे काम करता है ?

एक पब/उप सेवा में आमतौर पर तीन मुख्य घटक होते हैं:

  1. प्रकाशक : किसी विषय पर संदेश भेजने के लिए प्रकाशक जिम्मेदार होता है। यह एप्लिकेशन का कोई भी हिस्सा हो सकता है जिसे संदेश भेजने की आवश्यकता है।
  2. विषय : वह स्थान जहां संदेश प्रकाशित किए जाते हैं। सदस्य संदेश प्राप्त करने के लिए विषय की सदस्यता ले सकते हैं।
  3. सब्सक्राइबर : सब्सक्राइबर किसी विषय से संदेश प्राप्त करने के लिए जिम्मेदार होता है। यह एप्लिकेशन का कोई भी हिस्सा हो सकता है जिसे संदेश प्राप्त करने की आवश्यकता है।
  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);
    

आइए सदस्यता विधि पर ध्यान दें।

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

प्रकाशन सेवा

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

हमें इसका इस्तेमाल क्यों करना चाहिए?

लूज़ कपलिंग: पब्लिश/सब्सक्राइब सिस्टम का उपयोग करने के सबसे बड़े फायदों में से एक है लूज़ डिकूप्लिंग। जैसा कि हम पहले ही चर्चा कर चुके हैं कि प्रकाशक ग्राहकों के बारे में नहीं जानते हैं।

अनुमापनीयता: यह सिस्टम को विशाल मात्रा में स्केल करने का एक तरीका प्रदान करता है। ऐसा इसलिए है क्योंकि पैटर्न संदेशों के वितरण को अतुल्यकालिक रूप से संभाल सकता है, जिसका अर्थ है कि यह एप्लिकेशन के अन्य भागों को ब्लॉक नहीं करता है।

हैप्पी पब्लिशिंग !!!!