Pusher: دو طرفہ ریئل ٹائم کمیونیکیشن کے لیے ہوسٹڈ سروس، چینلز، ایونٹس اور ویب ہک نوٹیفکیشنز کے لیے بنیادی ڈھانچہ فراہم کرتی ہے۔ یہ ڈویلپر کو اپنا WebSocket سرور تعینات کرنے کی ضرورت سے آزاد کرتی ہے اور لاکھوں آلات تک پیغام کی ترسیل کو یقینی بناتی ہے۔ سرکاری Pusher دستاویزات (2025) کے مطابق، سروس دنیا بھر میں ماہانہ 40 بلین سے زیادہ پیغامات پر کارروائی کرتی ہے۔
اہم نکات
Pusher دو طرفہ ریئل ٹائم کمیونیکیشن کے لیے ایک کلاؤڈ سروس ہے، جس کی بنیاد 2011 میں رکھی گئی۔ یہ اپنا WebSocket سرور منظم کیے بغیر ریئل ٹائم میں پیغامات بھیجنے اور وصول کرنے کے لیے تیار بنیادی ڈھانچہ فراہم کرتی ہے۔ Pusher چیٹس، لائیو نوٹیفکیشنز، باہمی ترمیم اور گیم لیڈر بورڈز بنانے کے لیے استعمال ہوتا ہے۔
Socket.IO جیسی لائبریریوں کے برعکس، جن میں اپنا سرور تعینات اور برقرار رکھنے کی ضرورت ہوتی ہے، Pusher SaaS (سافٹ ویئر بطور سروس) ماڈل پر کام کرتا ہے۔ ڈویلپر رجسٹر ہوتا ہے، چابیاں (app_id، key، secret) حاصل کرتا ہے اور ایونٹس شائع کرنے کے لیے Pusher REST API استعمال کرتا ہے۔ سرور کا بنیادی ڈھانچہ مکمل طور پر Pusher پلیٹ فارم کے زیر انتظام ہے۔
سرکاری Pusher بلاگ (2025) کے مطابق، پلیٹ فارم دنیا بھر میں 250,000 سے زیادہ فعال منصوبوں کی خدمت کرتا ہے۔ معروف کلائنٹس میں GitHub (ریئل ٹائم نوٹیفکیشنز)، Trello (بورڈ سنکرونائزیشن) اور Intercom (سپورٹ چیٹ) شامل ہیں۔ Pusher تاخیر کو کم سے کم کرنے کے لیے امریکہ، یورپ اور ایشیا میں ڈیٹا سینٹرز کی حمایت کرتا ہے۔
Pusher 2011 میں WebSocket کے لیے پہلی ہوسٹڈ سروسز میں سے ایک کے طور پر شروع کیا گیا تھا۔ 2014 میں، کمپنی نے Pusher Channels متعارف کرایا — private اور presence چینلز کی حمایت کے ساتھ موجودہ فن تعمیر۔ 2017 میں، سرور سائیڈ ایونٹس کے لیے ویب ہک سپورٹ شامل کیا گیا۔ 2022 میں، Pusher نے موبائل پلیٹ فارمز کے لیے پش نوٹیفکیشن سروس Pusher Beams لانچ کی۔
Pusher کا فن تعمیر خود میزبان حل سے مختلف ہے کیونکہ تمام سبسکرپشن ہینڈلنگ، کنکشن مینجمنٹ اور ایونٹ روٹنگ Pusher Cloud کی طرف ہوتی ہے۔ ڈویلپر صرف اپنے بیک اینڈ کے ذریعے private چینلز کی تصدیق کا انتظام کرتا ہے۔
Pusher کا فن تعمیر ناشر-سبسکرائبر ماڈل پر مبنی ہے۔ سرور ایپلیکیشنز Pusher REST API کے ذریعے ایونٹس شائع کرتی ہیں، اور کلائنٹ ایپلیکیشنز انہیں مستقل WebSocket کنکشن کے ذریعے وصول کرتی ہیں۔ Pusher ناشروں اور سبسکرائبرز کے درمیان ثالث کے طور پر کام کرتا ہے۔
جب سرور Pusher API کو POST درخواست کے ذریعے ایونٹ بھیجتا ہے، تو پلیٹ فارم ہدف چینل کا تعین کرتا ہے اور اس چینل کو سبسکرائب کرنے والے تمام کلائنٹس کو پیغام پہنچاتا ہے۔ کلائنٹس پہلے سے کھلے WebSocket کنکشن کے ذریعے ایونٹ وصول کرتے ہیں، جو جغرافیائی محل وقوع کے لحاظ سے 50–100 ms کی تاخیر فراہم کرتا ہے۔
ہر کلائنٹ Pusher Client SDK کے ذریعے کنکشن قائم کرتا ہے، جو خود بخود ٹرانسپورٹ کا انتخاب کرتا ہے (WebSocket — ترجیح، HTTP long-polling — فال بیک)۔ SDK ڈویلپر کی شمولیت کے بغیر دوبارہ کنکشن، ڈیٹا سیریلائزیشن اور غلطی کے انتظام کو سنبھالتا ہے۔ Pusher تکنیکی دستاویزات (2025) کے مطابق، نیٹ ورک میں خلل کے بعد دوبارہ جڑنے کا وقت 1 سیکنڈ سے کم ہے۔
سسٹم تین اجزاء پر مشتمل ہے: Pusher Server API (ایونٹس شائع کرنے کے لیے REST اینڈ پوائنٹس)، Pusher Client SDK (ایونٹس سبسکرائب کرنے کے لیے لائبریریاں) اور Pusher WebHook (کنکشن/منقطع ہونے کے ایونٹس کے بارے میں سرور کو اطلاع)۔ تمام اجزاء غیر مطابقت پذیر اور آزادانہ طور پر کام کرتے ہیں۔
Pusher Channels تین اقسام کے چینلز کو سپورٹ کرتا ہے، ہر ایک مختلف استعمال کے معاملات کے لیے ڈیزائن کیا گیا ہے۔ چینل کی قسم رسائی کی سطح، تصدیقی طریقہ کار اور دستیاب صلاحیتوں کا تعین کرتی ہے۔
| چینل کی قسم | سابقہ | تصدیق | استعمال |
|---|---|---|---|
| Public | channel- | درکار نہیں | عوامی ڈیٹا: شرح مبادلہ، موسم، خبروں کی فیڈ |
| Private | private- | سرور پر درخواست پر دستخط | ذاتی اطلاعیں، چیٹس، صارف کا ڈیٹا |
| Presence | presence- | دستخط + صارف کی معلومات | آن لائن حیثیت، گیم رومز، باہمی ترمیم |
Public چینلز تصدیق کے بغیر تمام کلائنٹس کے لیے دستیاب ہیں اور براڈکاسٹ ڈیٹا کے لیے موزوں ہیں۔ Private چینلز کو ڈویلپر کے سرور کے ذریعے تصدیق کی ضرورت ہوتی ہے: کلائنٹ اپنے بیک اینڈ کو socket_id اور channel_name کے ساتھ درخواست بھیجتا ہے، سرور Pusher خفیہ کلید کے ساتھ درخواست پر دستخط کرتا ہے اور تصدیقی ٹوکن واپس کرتا ہے۔ Presence چینلز اضافی طور پر صارف کی معلومات (user_id، user_info) منتقل کرتے ہیں اور یہ ٹریک کرنے کی اجازت دیتے ہیں کہ اس وقت کون آن لائن ہے۔
Pusher دستاویزات (2025) کے مطابق، public اور private چینلز کے لیے فی چینل زیادہ سے زیادہ بیک وقت منسلک کلائنٹس کی تعداد 10,000 ہے۔ Presence چینلز کے لیے، حد فی چینل 10,000 صارفین ہے جس میں فی ایپلیکیشن 100,000 صارفین تک کی حمایت ہے۔
Pusher ایونٹ ماڈل نامزد ایونٹس پر مبنی ہے جو ایک چینل میں شائع ہوتے ہیں۔ ہر ایونٹ کا ایک نام (زیادہ سے زیادہ 200 حروف)، JSON فارمیٹ میں ڈیٹا اور ایونٹ شروع کرنے والے کو ڈپلیکیٹ بھیجنے سے روکنے کے لیے اختیاری socket_id ہوتا ہے۔
ٹریگرز Pusher API کو HTTP POST درخواستیں ہیں جو ایک چینل میں ایونٹ شائع کرتی ہیں۔ درخواست کا فارمیٹ: channel، name اور data پر مشتمل باڈی کے ساتھ POST /apps/{app_id}/events۔ Pusher Server API سرکاری لائبریریوں (PHP، Ruby، Python، Go، Java، Node.js) کے ذریعے کسی بھی سرور ماحول سے ٹریگرز کو سپورٹ کرتا ہے۔
Pusher بیچ ٹریگرز کو سپورٹ کرتا ہے — ایک درخواست کے ساتھ متعدد چینلز میں ایک ایونٹ شائع کرنا۔ یہ ترتیب وار کالوں سے زیادہ موثر ہے اور جوہری ترسیل کی ضمانت دیتا ہے۔ Pusher کارکردگی کے ٹیسٹ (2024) کے مطابق، 100 چینلز پر بیچ ٹریگر میں 30–50 ms لگتے ہیں، جبکہ ترتیب وار کالوں میں 2–5 سیکنڈ لگتے ہیں۔
Pusher WebHook آپ کے سرور کو بنیادی ڈھانچے کے ایونٹس (کلائنٹ کنکشن، منقطع ہونا، غلطی کا واقعہ) کے بارے میں اطلاع حاصل کرنے کی اجازت دیتا ہے۔ Webhook درخواستیں تصدیق کے لیے HMAC-SHA256 سے دستخط شدہ ہوتی ہیں۔ یہ لاگنگ، تجزیات اور حالت کی مطابقت پذیری کے لیے اہم ہے۔
Pusher انٹیگریشن دو حصوں پر مشتمل ہے: سرور سائیڈ (ایونٹس شائع کرنا) اور کلائنٹ سائیڈ (ایونٹس سبسکرائب کرنا)۔ آئیے سرور حصے کے لیے Node.js اور کلائنٹ حصے کے لیے JavaScript استعمال کرتے ہوئے ایک مثال دیکھتے ہیں۔ پہلے، آپ کو Pusher ڈیش بورڈ میں ایک ایپلیکیشن بنانا اور اسناد حاصل کرنا ہوں گی۔
Pusher دستاویزات (2025) کے مطابق، بنیادی منصوبہ (Sandbox) میں 100 بیک وقت کنکشن اور روزانہ 200,000 پیغامات شامل ہیں — ترقی اور جانچ کے لیے کافی۔ پروڈکشن پلانز 1000 کنکشنز کے لیے $49 ماہانہ سے شروع ہوتے ہیں۔
const Pusher = require('pusher');
const pusher = new Pusher({
appId: 'YOUR_APP_ID',
key: 'YOUR_KEY',
secret: 'YOUR_SECRET',
cluster: 'eu',
useTLS: true
});
pusher.trigger('my-channel', 'my-event', {
message: 'Hello from server',
timestamp: Date.now()
}).then(() => {
console.log('ایونٹ شائع ہوا');
}).catch(console.error);
import Pusher from 'pusher-js';
const pusher = new Pusher('YOUR_KEY', {
cluster: 'eu',
forceTLS: true
});
const channel = pusher.subscribe('my-channel');
channel.bind('my-event', (data) => {
console.log('ایونٹ موصول ہوا:', data);
displayNotification(data.message);
});
Pusher iOS (Swift) اور Android (Java/Kotlin) کے لیے SDK فراہم کرتا ہے جو JavaScript کلائنٹ کی فعالیت کو مکمل طور پر نقل کرتے ہیں۔ موبائل SDK ایک ہی چینل کی اقسام، تصدیقی طریقہ کار اور ایونٹ ماڈل کو سپورٹ کرتے ہیں۔ React Native کے لیے، pusher-js پیکیج دستیاب ہے، جو JavaScript برج کے ذریعے کام کرتا ہے۔
موبائل آلات پر، Pusher SDK ایکسپونینشل بیک آف کے ساتھ دوبارہ کنکشن میکانزم کا استعمال کرتے ہوئے Wi-Fi اور موبائل نیٹ ورکس کے درمیان سوئچنگ کو خود بخود سنبھالتا ہے۔ یہ iOS ایپس کے لیے خاص طور پر اہم ہے، جہاں iOS بیک گراؤنڈ آپریشن کے دوران WebSocket کنکشنز کو زبردستی بند کر سکتا ہے۔
Pusher تکنیکی بلاگ (2024) کے مطابق، جب کوئی فعال ایونٹ نہیں ہوتا تو ایک Pusher کنکشن کی اوسط ٹریفک کھپت 1–2 KB فی منٹ ہے۔ یہ 30 سیکنڈ کے وقفے کے ساتھ ایک بہتر ہارٹ بیٹ پروٹوکول کے ذریعے حاصل کیا جاتا ہے۔ ایک درمیانے سائز کی ایپلیکیشن بیٹری کی زندگی کو نمایاں طور پر متاثر کیے بغیر 1000 تک بیک وقت Pusher کنکشنز کو سپورٹ کر سکتی ہے۔
Pusher Beams APNs (iOS) اور FCM (Android) کے ذریعے موبائل آلات پر پش نوٹیفکیشن بھیجنے کے لیے ایک اضافی سروس ہے۔ Beams Pusher Channels کے ساتھ ضم ہوتا ہے: اگر کلائنٹ آف لائن ہے تو ایک چینل کا ایونٹ خود بخود پش نوٹیفکیشن کو متحرک کر سکتا ہے۔ یہ ایپ بند ہونے پر پیغام کی ترسیل کے مسئلے کو حل کرتا ہے۔
Pusher سیکیورٹی کئی سطحوں پر لاگو کی گئی ہے۔ Pusher API کو ہر درخواست app_secret استعمال کرتے ہوئے HMAC-SHA256 کے ساتھ دستخط شدہ ہوتی ہے۔ یہ یقینی بناتا ہے کہ صرف مجاز سرور ہی ایونٹس شائع کر سکتا ہے۔ کلائنٹ SDK ایپلیکیشن کی شناخت کے لیے app_key استعمال کرتے ہیں، لیکن private اور presence چینلز تک رسائی کے لیے اضافی تصدیق کی ضرورت ہوتی ہے۔
Private چینل کی تصدیق تین مراحل میں ہوتی ہے: کلائنٹ pusher.subscribe('private-channel') کال کرتا ہے، Pusher Client SDK آپ کے بیک اینڈ اینڈ پوائنٹ (/pusher/auth) پر HTTP درخواست بھیجتا ہے، سرور صارف کی اجازتوں کی جانچ کرتا ہے اور خفیہ کلید سے دستخط شدہ تصدیقی ٹوکن واپس کرتا ہے۔ Pusher دستخط کی تصدیق کرتا ہے اور سبسکرپشن کی اجازت دیتا ہے۔
تمام درخواستوں کے لیے TLS کنکشن استعمال کرنے کی سفارش کی جاتی ہے (SDK میں useTLS: true سیٹنگ)۔ Pusher REST API پر سرور کی درخواستوں کے لیے IP ایڈریس کے ذریعے رسائی کی پابندیوں کو بھی سپورٹ کرتا ہے۔ انٹرپرائز پلانز کے لیے، VPC (ورچوئل پرائیویٹ کلاؤڈ) اور الگ تھلگ بنیادی ڈھانچے کے ساتھ سرشار کلسٹرز کی حمایت دستیاب ہے۔
اکثر پوچھے گئے سوالات
Pusher ایک ہوسٹڈ سروس (SaaS) ہے جس میں سرور کے انتظام کی ضرورت نہیں۔ Socket.IO ایک لائبریری ہے جسے آپ کو خود تعینات کرنا ہوگا۔ Pusher ترتیب دینے میں آسان ہے لیکن پیمانہ بڑھانے پر مہنگا ہے، Socket.IO میں DevOps کام کی ضرورت ہے لیکن بڑی مقدار میں سستا ہے۔
مفت Sandbox منصوبہ 100 کنکشنز اور روزانہ 200,000 پیغامات شامل کرتا ہے۔ پروڈکشن پلانز $49/ماہ (1000 کنکشنز، لامحدود پیغامات) سے لے کر حسب ضرورت شرائط کے ساتھ انٹرپرائز تک شروع ہوتے ہیں۔
Pusher HTTP long-polling پر خودکار فال بیک کے ساتھ WebSocket استعمال کرتا ہے۔ اہم پیغامات کے لیے، کم از کم ایک بار ترسیل کی ضمانت (at-least-once) کے ساتھ Pusher کی طرف ایک قطار دستیاب ہے۔
ہاں، Pusher یورپی کلسٹر (eu) کے ذریعے روس سے دستیاب ہے۔ یورپی ڈیٹا سینٹرز کے لیے تاخیر 50–100 ms ہے۔ ڈیٹا لوکلائزیشن کی ضروریات والے منصوبوں کے لیے، متبادل پر غور کرنے کی سفارش کی جاتی ہے۔
بڑے حریف Ably (یکساں فعالیت، زیادہ لچکدار قیمت)، PubNub (عالمی ترسیل کا نیٹ ورک)، Socket.IO (خود میزبان) اور Firebase Realtime Database (Google ایکو سسٹم) ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں