PubNub — یک شبکه جهانی برای پیامرسانی بلادرنگ است که زیرساختی برای انتشار و اشتراک پیامها از طریق WebSocket با کمترین تأخیر فراهم میکند. این پلتفرم برای برنامههایی طراحی شده که به تحویل مطمئن دادهها تحت بار بالا و اتصال ناپایدار نیاز دارند. بر اساس مستندات رسمی PubNub (2025)، این پلتفرم ماهانه بیش از 1 تریلیون پیام را برای ۷۰٬۰۰۰+ برنامه در سراسر جهان پردازش میکند.
نکات کلیدی
PubNub — یک شبکه جهانی انتقال داده در زمان واقعی است که در سال ۲۰۱۰ تأسیس شد. این پلتفرم API را برای انتشار و اشتراک پیامها و همچنین خدمات اضافی ارائه میدهد: ذخیره تاریخچه، مدیریت حضور، توابع بدون سرور (PubNub Functions) و تحلیل جریان داده.
معماری PubNub بر اساس شبکه توزیعشده نقاط حضور (POP) است که در ۱۵+ منطقه جغرافیایی قرار دارند. هر نقطه شامل بروکرهای کشکننده است که پیامها را بین ناشران و مشترکان با کمترین تأخیر مسیریابی میکند. PubNub از یک بروکر مرکزی واحد استفاده نمیکند — هر منطقه مستقل کار میکند و از طریق شبکه جهانی همگامسازی میشود.
بر اساس سایت رسمی PubNub (2025)، این پلتفرم به بیش از ۷۰٬۰۰۰ برنامه در ۲۰۰+ کشور خدمات میدهد. از مشتریان کلیدی میتوان به Logitech (مدیریت دستگاههای IoT)، GoPro (پخش ویدئوی بلادرنگ)، eBay (همگامسازی حراجها) و Snapchat (چت و اعلانها) اشاره کرد.
PubNub بر سه اصل بنا شده است: سرعت (تأخیر کمتر از ۱۰ میلیثانیه در صدک ۹۵ در یک منطقه)، قابلیت اطمینان (تضمین تحویل at-least-once با تلاش مجدد خودکار) و مقیاسپذیری (گسترش افقی بدون محدودیت در تعداد کانالها). پلتفرم پیامها را در ذخیرهسازی بلندمدت نگهداری نمیکند — تاریخچه از طریق سرویس جداگانه Storage & Playback قابل دسترسی است.
مدل کار PubNub مبتنی بر الگوی کلاسیک publish-subscribe است. کلاینت ناشر پیامی را با مشخص کردن کانال از طریق PubNub REST API با کلید publish ارسال میکند. PubNub پیام را به تمام مشترکان این کانال از طریق اتصالات WebSocket فعال آنها تحویل میدهد. مشترکان پیام را از طریق handler ثبتشده در PubNub SDK دریافت میکنند.
لایه انتقال PubNub از WebSocket به عنوان پروتکل اصلی استفاده میکند، با fallback به HTTP long-polling برای محیطهای محدود. SDK به طور خودکار اتصال را مدیریت میکند: برقراری، حفظ heartbeat (هر ۱۵–۶۰ ثانیه بسته به شبکه) و اتصال مجدد در صورت قطعی.
هر پیام در PubNub حاوی فرادادهها است: UUID فرستنده، برچسب زمانی، شماره ترتیبی (timetoken) و پرچمها (store, replicate, eatAfterRead). Timetoken — یک شناسه منحصربهفرد PubNub مبتنی بر زمان است که ترتیب جهانی پیامها را در کانال تضمین میکند. بر اساس مستندات PubNub (2025)، timetoken دقت ۱۰ نانوثانیه دارد.
وقتی کلاینتی پیامی را منتشر میکند، از Stream Controller — ماژول مسیریابی PubNub عبور میکند. Stream Controller مجوزهای دسترسی (PAM) را بررسی میکند، قوانین تبدیل (PubNub Functions) را اعمال میکند، مناطق هدف را تعیین کرده و پیام را به همه مشترکان ارسال میکند. اگر مشترکی آفلاین باشد، پیام به مدت ۳۰ ثانیه (پیشفرض) بافر میشود.
سیستم کلیدهای PubNub سطوح دسترسی را به سه سطح تقسیم میکند: کلید publish (فقط انتشار)، کلید subscribe (فقط اشتراک) و کلید secret (مدیریت). هر برنامه در هنگام ثبت نام یک مجموعه سه کلیدی دریافت میکند، اما کلید secret هرگز به کلاینت ارسال نمیشود — فقط در سمت سرور استفاده میشود.
کلید publish برای ارسال پیام به کانالها استفاده میشود. کلید subscribe — برای اشتراک در کانالها و دریافت پیامها. کلید secret — برای مدیریت دسترسی از طریق PubNub Access Manager (PAM)، ایجاد توکنهای موقت مخاطب و مدیریت کلیدها. کلید secret به صورت امن روی سرور ذخیره میشود و هرگز در اختیار کلاینتها قرار نمیگیرد.
PubNub از چندین حالت احراز هویت پشتیبانی میکند: با آدرس IP (برای سرورها)، با کلید مخفی (برای عملیات مدیریتی)، با توکنهای موقت (برای کلاینتها). توکنهای موقت از طریق PAM با محدودیت زمانی، کانال و مجوزها (read, write, manage) صادر میشوند.
کانالهای PubNub — مسیرهای نامگذاری شده برای پیامها هستند. نام کانال رشتهای تا ۹۲ کاراکتر است که از حروف لاتین، اعداد، خط تیره و زیرخط پشتیبانی میکند. کانالها به صورت پویا در اولین انتشار یا اشتراک ایجاد میشوند. PubNub از الگوهای کانال از طریق نماد * در درخواست subscribe پشتیبانی میکند — این امکان اشتراک در گروهی از کانالها را فراهم میکند (مثلاً user-*).
Channel Groups — مکانیزم گروهبندی کانالها برای اشتراک انبوه. به جای اشتراک در ۵۰ کانال جداگانه، کلاینت در یک گروه مشترک میشود و تمام پیامهای کانالهای عضو به طور خودکار به او تحویل داده میشود. Channel Groups از تودرتو پشتیبانی میکند، اما عمق نباید از ۳ سطح تجاوز کند.
بر اساس مستندات فنی PubNub (2025)، حداکثر تعداد مشترکان در یک کانال ۵۰٬۰۰۰ است. برای بارهای بالاتر، استفاده از کانالهای با پیشوند و شرِد کردن مخاطب توصیه میشود (مثلاً chat-room-001, chat-room-002). Channel Groups همچنین میتوانند بر اساس اصل جغرافیایی یا موضوعی سازماندهی شوند.
| پارامتر | حداکثر | توضیح |
|---|---|---|
| طول نام کانال | ۹۲ کاراکتر | حروف لاتین، اعداد، -, _ |
| مشترکان در کانال | ۵۰٬۰۰۰ | بیشتر — شرِد کنید |
| Channel Groups | ۲۰۰۰ گروه / کلید | تا ۵۰۰ کانال در گروه |
| تاریخچه (storage) | نامحدود | پرداخت بر اساس حجم ذخیرهسازی |
یکپارچهسازی PubNub نیاز به ثبت نام، ایجاد برنامه در پنل مدیریت و دریافت مجموعه کلیدها دارد. کتابخانههای PubNub برای JavaScript، Swift، Kotlin، Java، Dart (Flutter)، C#، Python، Ruby، Go و بسیاری از زبانهای دیگر در دسترس هستند. بیایید مثالی در JavaScript برای مرورگر و Node.js بررسی کنیم.
بر اساس مستندات PubNub (2025)، کتابخانه pubnub-js هم از CommonJS و هم از import ES Module پشتیبانی میکند. برای مرورگر، نصب از طریق npm و سپس bundle کردن با webpack یا vite توصیه میشود.
import PubNub from 'pubnub';
const pubnub = new PubNub({
publishKey: 'PUBLISH_KEY',
subscribeKey: 'SUBSCRIBE_KEY',
userId: 'user-100'
});
pubnub.subscribe({
channels: ['chat-general']
});
pubnub.addListener({
message: (event) => {
console.log('پیام جدید:', event.message);
},
presence: (event) => {
console.log('حضور:', event.uuid, event.action);
}
});
pubnub.publish({
channel: 'chat-general',
message: { text: 'Hello everyone!', sender: 'user-100' }
});
pubnub.fetchMessages(
{ channels: ['chat-general'], count: 50 },
(status, response) => {
if (status.error) {
console.error('خطا در بازیابی تاریخچه', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — پلتفرم بدون سرور برای پردازش پیامها در سمت PubNub است. توابع به زبان JavaScript نوشته میشوند و در یک محیط ایزوله امن (V8 isolate) اجرا میشوند. آنها میتوانند پیامها را قبل از تحویل به مشترکان تبدیل، فیلتر، بافر و هدایت کنند.
Stream Controller — مکانیزم مسیریابی داخلی است که جریان پیامها را بر اساس قوانین مدیریت میکند. قوانین مشخص میکنند کدام پیامها تحویل داده شوند، کدام کنار گذاشته شوند و کدام برای پردازش به PubNub Functions هدایت شوند. Stream Controller از مسیریابی شرطی بر اساس محتوای پیام، نوع کانال یا فراداده پشتیبانی میکند.
بر اساس وبلاگ PubNub (2024)، PubNub Functions هزینههای زیرساخت سرور برای پردازش پیام را ۴۰–۶۰٪ کاهش میدهد، زیرا منطق فیلتر و تبدیل در گرههای لبه PubNub اجرا میشود، نه روی سرور شخصی. توابع به درخواستهای HTTP، ذخیرهسازی Key-Value و سایر توابع در همان فضا دسترسی دارند.
PubNub SDK برای پلتفرمهای موبایل برای iOS (Swift)، Android (Kotlin/Java)، Flutter (Dart) و React Native (JavaScript) در دسترس هستند. SDKهای موبایل از مجموعه کامل ویژگیها پشتیبانی میکنند: pub/sub، حضور، تاریخچه، PAM و PubNub Functions. برای اعلانهای فشاری، PubNub از طریق مکانیزم ویژه mobile push gateway با APNs و FCM یکپارچه میشود.
بهینهسازی برای دستگاههای موبایل شامل heartbeat تطبیقی، پردازش دستهای پیامها و پشتیبانی از حالتهای پسزمینه است. PubNub SDK برای iOS از Background Task API برای حفظ اتصال در هنگام کوچکسازی برنامه (تا ۳۰ ثانیه زمان استاندارد پسزمینه) استفاده میکند. برای کار پسزمینه طولانیتر، استفاده از اعلانهای فشاری مورد نیاز است.
Mobile Push Gateway — مکانیزم ارسال اعلانهای فشاری از طریق PubNub. وقتی پیامی در کانال منتشر میشود، PubNub به طور خودکار تعیین میکند کدام مشترکان آفلاین هستند و از طریق APNs (iOS) یا FCM (Android) اعلان فشاری برای آنها ارسال میکند. پیکربندی یک بار در پنل مدیریت انجام میشود — پس از آن تمام پیامهای کانال به طور خودکار در کانال push تکرار میشوند. بر اساس مستندات PubNub (2025)، gateway تا ۱۰٬۰۰۰ اعلان فشاری در ثانیه پردازش میکند.
سوالات متداول
PubNub SDKهای بیشتری (۷۵+ پلتفرم)، توابع بدون سرور داخلی و Stream Controller برای پردازش پیام ارائه میدهد. Pusher در تنظیمات سادهتر است، اما PubNub کنترل بیشتری بر مسیریابی و تبدیل دادهها میدهد.
PubNub از مکانیزم at-least-once با تلاش مجدد خودکار در هنگام خطا استفاده میکند. هر پیام یک timetoken منحصربهفرد برای حذف تکراری دارد. پیامها برای مشترکان آفلاین به مدت ۳۰ ثانیه بافر میشوند.
طرح رایگان شامل ۱۰۰ اتصال همزمان و ۱ میلیون پیام در ماه است. طرحهای پولی از ۴۹ دلار در ماه برای ۱۰۰۰ اتصال همزمان با تعداد پیام نامحدود شروع میشوند.
بله، PubNub از TLS 1.3 برای تمام اتصالات و رمزنگاری اختیاری end-to-end در سمت کلاینت (AES-256) با مدیریت کلید از طریق PAM پشتیبانی میکند. برای مشتریان enterprise حالت Cipher Key در دسترس است.
PubNub SDK را برای ۷۵+ پلتفرم از جمله JavaScript، Swift، Kotlin، Java، Dart، C#، Python، Ruby، Go، C++، PHP، Rust و Objective-C ارائه میدهد. این بزرگترین اکوسیستم در میان سرویسهای بلادرنگ است.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید