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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔