"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > संचार: डेटा प्राप्त करने के पैटर्न

संचार: डेटा प्राप्त करने के पैटर्न

2024-11-07 को प्रकाशित
ब्राउज़ करें:482

बड़ी घोषणा!
मैंने फ्रंटेंड सिस्टम डिज़ाइन की अपनी दैनिक सीखने की यात्रा शुरू कर दी है। और मैं ब्लॉग में प्रत्येक मॉड्यूल से अंतर्दृष्टि साझा करूंगा। तो, यह शुरुआत है और अभी बहुत कुछ आना बाकी है!

इस ब्लॉग में, हम फ्रंट-एंड सिस्टम डिज़ाइन के लिए आवश्यक विभिन्न डेटा प्राप्त करने वाले तंत्रों का पता लगाएंगे, जिनमें शॉर्ट पोलिंग, लॉन्ग पोलिंग, वेबसॉकेट, सर्वर-भेजे गए इवेंट (एसएसई), और वेबहुक शामिल हैं। प्रत्येक तकनीक क्लाइंट और सर्वर तक डेटा पहुंचाने के लिए विशिष्ट आवश्यकताओं को संबोधित करती है, और स्केलेबल, रीयल-टाइम वेब अनुप्रयोगों को डिजाइन करने के लिए उन्हें समझना महत्वपूर्ण है।

1. अल्प मतदान

शॉर्ट पोलिंग एक ऐसी विधि है जहां क्लाइंट अपडेट की जांच के लिए नियमित अंतराल पर सर्वर को बार-बार अनुरोध भेजता है।

Communication: Data Fetching Patterns

setInterval(async () => {
  const response = await fetch('/api/get-posts');
  const data = await response.json();
  // Update UI with new data
}, 5000); // Poll every 5 seconds

  • लघु लाइव संचार
  • डेटा की कोई दृढ़ता नहीं
  • कम संसाधन उपयोगिता
  • बार-बार अनुरोध के कारण सर्वर लोड
  • बैंडविड्थ उपयोग में वृद्धि

जैसे - स्टॉक मार्केट टिकर, सोशल मीडिया फ़ीड

2. लंबा मतदान

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

बैक-एंड से, प्रतिक्रिया केवल तभी भेजी जाएगी जब डेटा अपडेट किया जाएगा, तब तक यह अनुरोध को रोक कर रखेगा। यदि लंबे समय तक कोई अपडेट नहीं होता है तो टाइमआउट संसाधित हो जाता है।

Communication: Data Fetching Patterns

ग्राहक पक्ष

async function subscribe() {
  let response = await fetch("/subscribe");

  if (response.status == 502) {
    // Status 502 is a connection timeout error, let's reconnect
    await subscribe();
  } else if (response.status != 200) {
    // An error - let's show it
    showMessage(response.statusText);
    // Reconnect in one second
    await new Promise(resolve => setTimeout(resolve, 1000));
    await subscribe();
  } else {
    // Get and show the message
    let message = await response.text();
    showMessage(message);
    // Call subscribe() again to get the next message
    await subscribe();
  }
}

subscribe();

  • एकल दीर्घकालिक कनेक्शन
  • अल्प मतदान की तुलना में कम अनुरोधों के साथ वास्तविक समय अपडेट प्रदान करता है।
  • कोई अपडेट न होने पर अनावश्यक डेटा स्थानांतरण कम हो जाता है।
  • कनेक्शन को लंबे समय तक खुला रखा जा सकता है, जिससे सर्वर लोड बढ़ जाता है।

जैसे- लाइव ग्राहक सहायता चैट

3. वेब सॉकेट

वेबसॉकेट क्लाइंट और सर्वर के बीच पूर्ण-डुप्लेक्स संचार की अनुमति देता है, जिससे यह वास्तविक समय डेटा ट्रांसफर के लिए सबसे कुशल तरीका बन जाता है।

क्लाइंट सर्वर के साथ एक वेबसॉकेट कनेक्शन खोलता है और क्लाइंट और सर्वर दोनों इस एकल कनेक्शन पर एक दूसरे को संदेश भेज सकते हैं।

Communication: Data Fetching Patterns

webSocket = new WebSocket(url, protocols);

// Send message
webSocket.send("Here's some text that the server is urgently awaiting!");

// Receive message
webSocket.onmessage = (event) => {
  console.log(event.data);
};
  • निरंतर द्वि-दिशात्मक संचार
  • इसे लागू करने के लिए कई लाइब्रेरी - ws, सॉकेट.आईओ आदि।
  • कम ओवरहेड के साथ उच्च-आवृत्ति अपडेट के लिए कुशल
  • चुनौतियाँ - 1 सर्वर के साथ संचार बनाए रखें, विफलता और स्केलिंग को संभालें, संसाधनों पर कब्जा करें।

जैसे- लाइव चैट एप्लिकेशन, ऑनलाइन मल्टीप्लेयर गेम

4. सर्वर-भेजे गए इवेंट (एसएसई)

एसएसई HTTP कनेक्शन पर सर्वर से क्लाइंट तक अपडेट की एक यूनिडायरेक्शनल स्ट्रीम प्रदान करता है।

Communication: Data Fetching Patterns

const evtSource = new EventSource("ssedemo.php");

evtSource.onmessage = (event) => {
  const newElement = document.createElement("li");
  const eventList = document.getElementById("list");

  newElement.textContent = `message: ${event.data}`;
  eventList.appendChild(newElement);
};
  • यूनिडायरेक्शनल संचार लंबे समय तक जीवित रहें
  • एकल HTTP कनेक्शन
  • चुनौतियाँ - संसाधन उपयोग, ब्राउज़र अनुकूलता और निष्क्रिय टैब पर व्यवहार

जैसे - फ़ीड, सूचनाएं

5. वेबहुक

वेबहुक एक सर्वर-टू-सर्वर संचार तंत्र है जहां कोई घटना होने पर सर्वर एक पूर्वनिर्धारित यूआरएल पर डेटा भेजता है। क्लाइंट को अपडेट के लिए सर्वर की जाँच करते रहने की आवश्यकता नहीं है।

सिस्टम के बीच कार्रवाइयों को ट्रिगर करने के लिए लोकप्रिय, जैसे भुगतान सूचनाएं, GitHub ईवेंट, या तृतीय-पक्ष सेवा एकीकरण।

निष्कर्ष

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

प्रत्येक तकनीक के अपने फायदे और सीमाएँ हैं। इन्हें समझने से आपको कुशल, उत्तरदायी वेब एप्लिकेशन बनाने के लिए सूचित निर्णय लेने में मदद मिल सकती है।

यह ब्लॉग सुझावों और चर्चाओं के लिए खुला है!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/shagon/ communication-data-fetching-patterns-5d7a?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3