PubNub هي شبكة عالمية للرسائل في الوقت الفعلي توفر بنية تحتية لنشر الرسائل والاشتراك فيها عبر WebSocket بأقل زمن استجابة. وهي موجهة للتطبيقات التي تتطلب توصيلاً موثوقاً للبيانات تحت الأحمال العالية والاتصالات غير المستقرة. وفقاً للتوثيق الرسمي لـ PubNub (2025)، تعالج المنصة أكثر من تريليون رسالة شهرياً لأكثر من 70,000 تطبيق حول العالم.
النقاط الرئيسية
PubNub هي شبكة عالمية للبيانات في الوقت الفعلي، تأسست في عام 2010. توفر API لنشر الرسائل والاشتراك فيها، بالإضافة إلى خدمات إضافية: تخزين السجل، إدارة الحضور، وظائف بدون خادم (PubNub Functions) وتحليلات تدفق البيانات.
تعتمد بنية PubNub على شبكة موزعة من نقاط التواجد (POP) موزعة على أكثر من 15 منطقة جغرافية. تحتوي كل نقطة على وسطاء تخزين مؤقت يقومون بتوجيه الرسائل بين الناشرين والمشتركين بأقل زمن استجابة. لا تستخدم PubNub وسيطاً مركزياً واحداً — كل منطقة تعمل بشكل مستقل وتتزامن عبر الشبكة العالمية.
وفقاً للموقع الرسمي لـ PubNub (2025)، تخدم المنصة أكثر من 70,000 تطبيق في أكثر من 200 دولة. من بين العملاء الرئيسيين Logitech (إدارة أجهزة IoT)، GoPro (بث الفيديو في الوقت الفعلي)، eBay (مزامنة المزادات) و Snapchat (الدردشة والإشعارات).
تم بناء PubNub على ثلاثة مبادئ: السرعة (زمن استجابة أقل من 10 مللي ثانية في المئين 95 داخل منطقة واحدة)، الموثوقية (ضمان التوصيل at-least-once مع إعادة المحاولة التلقائية) و قابلية التوسع (التوسع الأفقي دون حد على عدد القنوات). لا تقوم المنصة بتخزين الرسائل في تخزين طويل الأجل — السجل متاح من خلال خدمة Storage & Playback المتصلة بشكل منفصل.
نموذج عمل PubNub يعتمد على نمط النشر والاشتراك الكلاسيكي. يرسل عميل الناشر رسالة مع تحديد القناة عبر REST API لـ PubNub باستخدام مفتاح النشر. يقوم PubNub بتوصيل الرسالة لجميع المشتركين في تلك القناة عبر اتصالات WebSocket النشطة لديهم. يتلقى المشتركون الرسالة عبر معالج رد اتصال مسجل في SDK لـ PubNub.
طبقة النقل في PubNub تستخدم WebSocket كبروتوكول أساسي، مع fallback على HTTP long-polling للبيئات ذات القيود. يدير SDK الاتصال تلقائياً: ينشئه، يحافظ على نبضات القلب (كل 15–60 ثانية حسب الشبكة) ويعيد الاتصال عند الانقطاع.
تحتوي كل رسالة في PubNub على بيانات وصفية: UUID للمرسل، طابع زمني، رقم تسلسلي (timetoken) وإشارات (store, replicate, eatAfterRead). Timetoken هو معرف فريد لـ PubNub يعتمد على الوقت ويضمن الترتيب العالمي للرسائل داخل القناة. وفقاً لوثائق PubNub (2025)، دقة timetoken تبلغ 10 نانوثانية.
عندما ينشر عميل رسالة، فإنها تمر عبر Stream Controller — وحدة التوجيه في PubNub. يتحقق Stream Controller من صلاحيات الوصول (PAM)، يطبق قواعد التحويل (PubNub Functions)، يحدد المناطق المستهدفة ويرسل الرسالة لجميع المشتركين. إذا كان المشترك غير متصل، يتم تخزين الرسالة مؤقتاً لمدة 30 ثانية (افتراضياً) في انتظار استعادة الاتصال.
نظام مفاتيح PubNub يفصل صلاحيات الوصول إلى ثلاثة مستويات: مفتاح النشر (نشر فقط)، مفتاح الاشتراك (اشتراك فقط) ومفتاح سري (إدارة). يتلقى كل تطبيق مجموعة من ثلاثة مفاتيح عند التسجيل، لكن المفتاح السري لا يُنقل أبداً إلى العميل — يُستخدم فقط على جانب الخادم.
مفتاح النشر يُستخدم لإرسال الرسائل إلى القنوات. مفتاح الاشتراك يُستخدم للاشتراك في القنوات واستقبال الرسائل. المفتاح السري يُستخدم لإدارة الوصول عبر PubNub Access Manager (PAM)، إنشاء رموز الجمهور المؤقتة وإدارة المفاتيح. يُحفظ المفتاح السري بأمان على الخادم ولا يُكشف أبداً للعملاء.
يدعم PubNub عدة أوضاع للمصادقة: بعنوان IP (للخوادم)، بالمفتاح السري (للعمليات الإدارية)، بالرموز المؤقتة (للعملاء). يتم إصدار الرموز المؤقتة عبر PAM مع قيود على وقت الصلاحية والقنوات والصلاحيات (read, write, manage).
قنوات PubNub هي مسارات رسائل مسماة. اسم القناة هو سلسلة بطول يصل إلى 92 حرفاً، تدعم الأحرف اللاتينية والأرقام والشرطات والشرطات السفلية. يتم إنشاء القنوات ديناميكياً عند أول نشر أو اشتراك. يدعم PubNub أنماط القنوات من خلال الرمز * في طلب الاشتراك — مما يسمح بالاشتراك في مجموعة قنوات (مثل user-*).
Channel Groups هي آلية لتجميع القنوات للاشتراك الجماعي. بدلاً من الاشتراك في 50 قناة فردية، يشترك العميل في مجموعة واحدة، ويتم توصيل جميع الرسائل من القنوات التابعة لها تلقائياً للعميل. تدعم Channel Groups التداخل، لكن العمق يجب ألا يتجاوز 3 مستويات.
وفقاً للوثائق التقنية لـ PubNub (2025)، الحد الأقصى لعدد المشتركين لكل قناة هو 50,000. للأحمال الأعلى، يُوصى باستخدام قنوات ذات بادئات وتقسيم الجمهور (مثل chat-room-001, chat-room-002). يمكن أيضاً تنظيم Channel Groups حسب المبدأ الجغرافي أو الموضوعي.
| المعامل | الحد الأقصى | ملاحظة |
|---|---|---|
| طول اسم القناة | 92 حرفاً | أحرف لاتينية، أرقام، -, _ |
| المشتركين لكل قناة | 50,000 | أعلى — تقسيم |
| Channel Groups | 2000 مجموعة / مفتاح | حتى 500 قناة لكل مجموعة |
| السجل (التخزين) | غير محدود | الدفع حسب حجم التخزين |
تكامل PubNub يتطلب التسجيل، إنشاء تطبيق في لوحة الإدارة والحصول على مجموعة مفاتيح. مكتبات PubNub متاحة لـ JavaScript، Swift، Kotlin، Java، Dart (Flutter)، C#، Python، Ruby، Go والعديد من اللغات الأخرى. لنلق نظرة على مثال في JavaScript للمتصفح و Node.js.
وفقاً لوثائق PubNub (2025)، تدعم مكتبة pubnub-js كلاً من استيراد CommonJS و ES Module. للمتصفح، يُوصى باستخدام بناء npm يتبعه تجميع عبر 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 تكاليف البنية التحتية للخادم لمعالجة الرسائل بنسبة 40–60% من خلال تنفيذ منطق التصفية والتحويل على العقد الحدودية لـ PubNub بدلاً من خادمك الخاص. للوظائف إمكانية الوصول إلى طلبات HTTP وتخزين Key-Value ووظائف أخرى داخل نفس المساحة.
SDK لـ PubNub للمنصات المحمولة متاح لـ iOS (Swift)، Android (Kotlin/Java)، Flutter (Dart) و React Native (JavaScript). تدعم SDKs المحمولة المجموعة الكاملة من الميزات: pub/sub، الحضور، السجل، PAM و PubNub Functions. للإشعارات الفورية، يتكامل PubNub مع APNs و FCM من خلال آلية بوابة دفع محمولة خاصة.
التحسين للأجهزة المحمولة يشمل نبضات قلب متكيفة، معالجة مجمعة للرسائل ودعم أوضاع الخلفية. يستخدم SDK لـ PubNub لنظام iOS Background Task API للحفاظ على الاتصال عند تصغير التطبيق (حتى 30 ثانية من وقت الخلفية القياسي). للتشغيل في الخلفية لفترة أطول، يلزم استخدام الإشعارات الفورية.
Mobile Push Gateway هي آلية لإرسال الإشعارات الفورية عبر PubNub. عندما تُنشر رسالة في قناة، يحدد PubNub تلقائياً المشتركين غير المتصلين ويرسل لهم إشعاراً فورياً عبر APNs (iOS) أو FCM (Android). يتم التهيئة مرة واحدة في لوحة الإدارة — بعد ذلك، تتضاعف جميع الرسائل من القناة تلقائياً إلى قناة الدفع. وفقاً لوثائق PubNub (2025)، تعالج البوابة حتى 10,000 إشعار فوري في الثانية.
الأسئلة الشائعة
PubNub يقدم المزيد من SDK (أكثر من 75 منصة)، ووظائف بدون خادم مدمجة و Stream Controller لمعالجة الرسائل. Pusher أسهل في الإعداد، لكن PubNub يمنح تحكماً أكبر في التوجيه وتحويل البيانات.
يستخدم PubNub آلية at-least-once مع إعادة محاولة تلقائية عند الفشل. كل رسالة لها timetoken فريد لإزالة التكرار. تُخزن الرسائل مؤقتاً لمدة 30 ثانية للمشتركين غير المتصلين.
الخطة المجانية تتضمن 100 اتصال متزامن ومليون رسالة شهرياً. الخطط المدفوعة تبدأ من $49/شهر لـ 1000 اتصال متزامن مع رسائل غير محدودة.
نعم، يدعم PubNub TLS 1.3 لجميع الاتصالات وتشفير اختياري من طرف إلى طرف على العميل (AES-256) مع إدارة المفاتيح عبر PAM. وضع Cipher Key متاح لعملاء المؤسسات.
يوفر PubNub SDK لـ أكثر من 75 منصة، بما في ذلك JavaScript، Swift، Kotlin، Java، Dart، C#، Python، Ruby، Go، C++، PHP، Rust و Objective-C. هذا هو أكبر نظام بيئي بين خدمات الوقت الفعلي.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.