Short Polling एक क्लाइंट-सर्वर संचार तकनीक है जिसमें क्लाइंट अपडेटेड डेटा प्राप्त करने के लिए निश्चित समय अंतराल पर HTTP अनुरोध भेजता है। सर्वर प्रत्येक अनुरोध को तुरंत प्रोसेस करता है, भले ही कुछ बदला न हो, वर्तमान स्थिति लौटाता है। Amazon Web Services, 2024 के अनुसार, Short Polling लागू करने में सबसे सरल लेकिन सबसे कम कुशल पोलिंग विधि है, जो सर्वर और नेटवर्क पर अतिरिक्त भार पैदा करती है।
मुख्य बिंदु
Short Polling एक संचार पैटर्न है जिसमें क्लाइंट पूर्वनिर्धारित अंतराल पर सर्वर को समय-समय पर HTTP अनुरोध भेजता है, और सर्वर प्रत्येक अनुरोध को सिंक्रोनस रूप से प्रोसेस करता है और तुरंत परिणाम लौटाता है। पोलिंग अंतराल क्लाइंट पक्ष पर टाइमर का उपयोग करके सेट किया जाता है और डेटा ताज़गी आवश्यकताओं के आधार पर आमतौर पर 1 से 60 सेकंड तक होता है।
Short Polling ऐतिहासिक रूप से वेब एप्लिकेशन में रियल-टाइम संचार व्यवस्थित करने का पहला तंत्र था। 2000 के दशक की शुरुआत में, XMLHttpRequest की दूसरी पीढ़ी से पहले, वेब पेज सामग्री अपडेट करने के लिए <meta http-equiv="refresh"> या समय-समय पर iframe रीलोड का उपयोग करते थे। 2005 में AJAX (Asynchronous JavaScript and XML) तकनीक के आगमन के साथ, Short Polling पूर्ण पृष्ठ रीलोड के बिना डेटा अपडेट करने का मानक दृष्टिकोण बन गया।
Short Polling आर्किटेक्चर में तीन घटक शामिल हैं: क्लाइंट टाइमर, HTTP अनुरोध और सर्वर हैंडलर। क्लाइंट एक अंतराल टाइमर शुरू करता है, जिसके प्रत्येक सक्रियण पर सर्वर को GET अनुरोध भेजा जाता है। सर्वर डेटाबेस या अन्य स्रोत से क्वेरी करता है, प्रतिक्रिया बनाता है और तुरंत क्लाइंट को लौटाता है। क्लाइंट इंटरफ़ेस अपडेट करता है और अगले टाइमर सक्रियण की प्रतीक्षा करता है। यह चक्र तब तक अनिश्चित काल तक दोहराता है जब तक एप्लिकेशन सक्रिय है।
Short Polling की मुख्य समस्या अपरिहार्य खाली अनुरोध हैं। यदि डेटा शायद ही कभी बदलता है, तो अधिकांश अनुरोध "कोई बदलाव नहीं" परिणाम लौटाते हैं, नेटवर्क बैंडविड्थ और प्रोसेसिंग CPU समय बर्बाद करते हैं। 5 सेकंड के पोलिंग अंतराल वाले 10,000 क्लाइंट पर, सर्वर प्रति सेकंड 2,000 अनुरोध प्राप्त करता है — जिसका एक महत्वपूर्ण हिस्सा बेकार है यदि अपडेट आवृत्ति 1 घटना प्रति मिनट है।
Short Polling एक सरल चक्र पर काम करता है: क्लाइंट एक निश्चित अवधि (जैसे, 5000 ms) के साथ एक अंतराल टाइमर सेट करता है। प्रत्येक टाइमर सक्रियण पर, क्लाइंट सर्वर एंडपॉइंट पर HTTP GET अनुरोध बनाता है, आमतौर पर अंतिम अपडेट के टाइमस्टैम्प पैरामीटर के साथ। सर्वर अनुरोध प्राप्त करता है, निर्दिष्ट टाइमस्टैम्प के बाद नए डेटा की जाँच करता है और प्रतिक्रिया लौटाता है — या तो नए डेटा के साथ या कोई अपडेट न होने का संकेत देता है।
Short Polling के कॉन्फ़िगरेशन का एक महत्वपूर्ण पैरामीटर पोलिंग अंतराल है। बहुत छोटा अंतराल (3 सेकंड से कम) सर्वर और नेटवर्क पर उच्च भार पैदा करता है। बहुत लंबा अंतराल (30 सेकंड से अधिक) डेटा ताज़गी कम करता है। इष्टतम अंतराल परिदृश्य पर निर्भर करता है: मॉनिटरिंग डैशबोर्ड के लिए — 5–15 सेकंड, समाचार फ़ीड के लिए — 30–60 सेकंड, महत्वपूर्ण अलर्ट के लिए — 1–3 सेकंड। अंतराल चुनना हमेशा डेटा ताज़गी और बुनियादी ढाँचे के भार के बीच समझौता होता है।
निष्क्रियता के दौरान भार कम करने के लिए अनुकूली अंतराल का उपयोग किया जाता है: यदि लगातार कई अनुरोध खाली परिणाम लौटाते हैं, तो अंतराल बढ़ जाता है (जैसे, 5 से 15 सेकंड)। जब नया डेटा आता है, तो अंतराल न्यूनतम मान पर रीसेट हो जाता है। एक्सपोनेंशियल बैकऑफ़ एल्गोरिदम दुर्लभ अपडेट के दौरान खाली अनुरोधों की संख्या को 3–5 गुना कम कर सकता है।
आइए setInterval और Fetch API का उपयोग करके क्लाइंट-साइड Short Polling कार्यान्वयन देखें। फ़ंक्शन एंडपॉइंट URL और मिलीसेकंड में पोलिंग अंतराल लेता है।
function startPolling(url, intervalMs) {
const lastTimestamp = new Date().toISOString();
const timerId = setInterval(async () => {
try {
const params = new URLSearchParams({
since: lastTimestamp
});
const response = await fetch(url + "?" + params);
const data = await response.json();
if (data.updates && data.updates.length > 0) {
renderUpdates(data.updates);
console.log("प्राप्त हुआ", data.updates.length, "updates");
}
} catch (error) {
console.error("पोलिंग विफल:", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) रोकने के लिए
कोड 5 सेकंड की अवधि के साथ पोलिंग अंतराल बनाता है और सर्वर को अंतिम अपडेट का टाइमस्टैम्प भेजता है। सर्वर डेटा को फ़िल्टर करने और केवल नए रिकॉर्ड लौटाने के लिए इस पैरामीटर का उपयोग कर सकता है, जिससे प्रेषित जानकारी की मात्रा कम हो जाती है। फ़ंक्शन पोलिंग को रोकने की संभावना के लिए टाइमर पहचानकर्ता लौटाता है।
Short Polling के लिए सर्वर-साइड कार्यान्वयन अत्यंत सरल है — यह एक सामान्य REST एंडपॉइंट है जो GET अनुरोध स्वीकार करता है और वर्तमान स्थिति या निर्दिष्ट टाइमस्टैम्प के बाद बदले गए डेटा के साथ JSON प्रतिक्रिया लौटाता है।
const express = require("express");
const app = express();
let items = [];
app.get("/api/updates", (req, res) => {
const since = req.query.since;
const filtered = items.filter(item => item.timestamp > since);
res.json({ updates: filtered });
});
app.listen(3000);
सर्वर since पैरामीटर प्राप्त करता है और उन रिकॉर्ड को फ़िल्टर करता है जिनका टाइमस्टैम्प निर्दिष्ट मान से अधिक है। यह दृष्टिकोण प्रत्येक प्रतिक्रिया में डेटा की मात्रा को कम करता है, केवल वृद्धिशील परिवर्तन लौटाता है। जब कोई नया डेटा नहीं होता, तो सर्वर एक खाली सरणी लौटाता है, और क्लाइंट निर्धारित कार्यक्रम के अनुसार पोलिंग जारी रखता है।
Short Polling और Long Polling एक ही समस्या हल करते हैं — सर्वर से क्लाइंट तक डेटा पहुँचाना — लेकिन दक्षता में मौलिक रूप से भिन्न हैं। Short Polling निश्चित अनुरोध अंतराल का उपयोग करता है, पूर्वानुमानित भार बनाता है, जबकि Long Polling किसी घटना होने तक कनेक्शन खुला रखता है, खाली प्रतिक्रियाओं की संख्या कम करता है।
| मानदंड | Short Polling | Long Polling |
|---|---|---|
| कार्यान्वयन जटिलता | कम, मानक REST | मध्यम, एसिंक्रोनस प्रोसेसिंग |
| अपडेट विलंब | निश्चित, N सेकंड तक | न्यूनतम, घटना घटित होने पर |
| अनुरोधों की संख्या | स्थिर, N अनुरोध प्रति मिनट | घटनानुसार, आमतौर पर बहुत कम |
| सर्वर भार | छोटे अंतराल पर उच्च | कनेक्शन धारण, एसिंक्रोनस प्रोसेसिंग |
| निष्क्रियता पर ट्रैफ़िक | अधिकतम, प्रत्येक अनुरोध हेडर के साथ | न्यूनतम, एक खुला कनेक्शन |
| स्केलेबिलिटी | सरल, स्टेटलेस अनुरोध | जटिल, साझा घटना कतार की आवश्यकता |
तकनीकों के बीच चुनाव डेटा की अपडेट आवृत्ति पर निर्भर करता है। यदि घटनाएँ हर 10 सेकंड में एक बार से अधिक होती हैं — दोनों दृष्टिकोण तुलनीय भार देते हैं, और Short Polling सरल हो सकता है। यदि घटनाएँ दुर्लभ हैं (बदलावों के बीच घंटे या मिनट) — Long Polling बेहतर है क्योंकि यह खाली अनुरोध नहीं बनाता। मध्यवर्ती परिदृश्यों के लिए, चुनाव बुनियादी ढाँचे की बाधाओं और WebSocket का उपयोग करने की क्षमता पर निर्भर करता है।
Short Polling उन परिदृश्यों में उपयोग किया जाता है जहाँ डेटा ताज़गी की आवश्यकताएँ कम होती हैं और कार्यान्वयन सरलता को दक्षता पर प्राथमिकता दी जाती है। सबसे विशिष्ट मामले आंतरिक प्रशासनिक पैनल, कम अलर्ट आवृत्ति वाले मॉनिटरिंग सिस्टम और ऐसे एप्लिकेशन हैं जहाँ 15–30 सेकंड की देरी स्वीकार्य है।
महत्वपूर्ण सीमा — Short Polling समय-महत्वपूर्ण एप्लिकेशन (ट्रेडिंग टर्मिनल, आपातकालीन चेतावनी सिस्टम) के लिए उपयुक्त नहीं है जहाँ 1 सेकंड की भी देरी अस्वीकार्य है। ऐसे परिदृश्यों में, WebSocket, Server-Sent Events या Long Polling का उपयोग करना आवश्यक है। Short Polling के साथ सिस्टम डिज़ाइन करते समय, अनुरोध बजट की गणना करनी चाहिए: 5 सेकंड अंतराल वाले 1,000 क्लाइंट पर, सर्वर प्रोसेस करता है प्रति मिनट 12,000 अनुरोध, जिसके लिए संबंधित संसाधन आधार की आवश्यकता होती है।
अक्सर पूछे जाने वाले प्रश्न
Short Polling वह है जब एप्लिकेशन हर N सेकंड में सर्वर से पूछता है: "क्या नया डेटा है?", और सर्वर हर बार जवाब देता है, भले ही कुछ बदला न हो। यह हर 5 मिनट में अपने मेलबॉक्स में जाकर जाँचने जैसा है कि नया मेल आया है या नहीं।
इष्टतम Short Polling अंतराल परिदृश्य पर निर्भर करता है: मॉनिटरिंग डैशबोर्ड के लिए 5–10 सेकंड, समाचार फ़ीड के लिए 15–30 सेकंड, स्थिति पृष्ठों के लिए 30–60 सेकंड। अंतराल डेटा ताज़गी और सर्वर भार के बीच समझौता होना चाहिए। 10 सेकंड से शुरू करें और परीक्षण परिणामों के आधार पर समायोजित करें।
Short Polling — क्लाइंट निश्चित अंतराल पर लगातार सर्वर से पूछताछ करता है। Long Polling — क्लाइंट एक अनुरोध करता है, और सर्वर डेटा आने तक उसे खुला रखता है। Short Polling लागू करना सरल है लेकिन दुर्लभ अपडेट के दौरान अधिक खाली अनुरोध बनाता है।
Short Polling WebSocket की तुलना में लागू करना सरल है और इसे विशेष प्रोटोकॉल की आवश्यकता नहीं है — यह सामान्य HTTP अनुरोधों के माध्यम से काम करता है। Short Polling सरल आंतरिक सिस्टम के लिए उचित है जहाँ 10–30 सेकंड की देरी स्वीकार्य है और WebSocket का समर्थन करने के बुनियादी ढाँचे की लागत अनुचित है।
अनुकूली अंतराल का उपयोग करें: जब अपडेट न हों, तो अनुरोधों के बीच ठहराव को 2–3 गुना बढ़ाएँ। अंतिम अनुरोध के टाइमस्टैम्प के साथ since पैरामीटर जोड़ें ताकि सर्वर केवल वृद्धिशील परिवर्तन लौटाए। बैकएंड भार कम करने के लिए CDN या प्रॉक्सी सर्वर पक्ष पर प्रतिक्रियाएँ कैश करें।
सारांश
setInterval या पुनरावर्ती setTimeout के माध्यम से निरंतर या अनुकूली अंतराल के साथ चक्रीय पोलिंग।हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।