Pusher: خدمة مستضافة للاتصال ثنائي الاتجاه في الوقت الفعلي، توفر بنية تحتية للقنوات والأحداث وإشعارات webhook. إنها توفر على المطور عناء نشر خادم WebSocket خاص به وتضمن توصيل الرسائل لملايين الأجهزة. وفقاً لـ التوثيق الرسمي لـ Pusher (2025)، تعالج الخدمة أكثر من 40 مليار رسالة شهرياً حول العالم.
الرئيسية
Pusher هي خدمة سحابية للاتصال ثنائي الاتجاه في الوقت الفعلي، تأسست في 2011. توفر بنية تحتية جاهزة لإرسال واستقبال الرسائل في الوقت الفعلي دون الحاجة إلى إدارة خادم WebSocket خاص. يُستخدم Pusher لبناء الدردشات والإشعارات المباشرة والتحرير التعاوني ولوحات المتصدرين للألعاب.
على عكس المكتبات مثل Socket.IO التي تتطلب نشر وصيانة خادم خاص، يعمل Pusher بنموذج SaaS (البرنامج كخدمة). يسجل المطور، ويحصل على مفاتيح (app_id، key، secret)، ويستخدم REST API الخاص بـ Pusher لنشر الأحداث. تتم إدارة البنية التحتية للخادم بالكامل بواسطة منصة Pusher.
وفقاً لـ مدونة Pusher الرسمية (2025)، تخدم المنصة أكثر من 250,000 مشروع نشط حول العالم. من بين العملاء المعروفين GitHub (إشعارات فورية)، Trello (مزامنة اللوحات) وIntercom (دردشة الدعم). يدعم Pusher مراكز بيانات في الولايات المتحدة وأوروبا وآسيا لتقليل زمن الاستجابة.
تم إطلاق Pusher في 2011 كواحدة من أولى الخدمات المستضافة لـ WebSocket. في 2014، قدمت الشركة Pusher Channels — البنية الحالية مع دعم القنوات private و presence. في 2017، تمت إضافة دعم webhook للأحداث من جانب الخادم. في 2022، أطلق Pusher خدمة Pusher Beams للإشعارات الفورية للمنصات المحمولة.
تختلف بنية Pusher عن الحلول المستضافة ذاتياً في أن جميع معالجة الاشتراكات وإدارة الاتصالات وتوجيه الأحداث تتم على جانب Pusher Cloud. يدير المطور فقط مصادقة القنوات private عبر backend الخاص به.
بنية Pusher تعتمد على نموذج الناشر-المشترك. تنشر تطبيقات الخادم الأحداث عبر REST API الخاص بـ Pusher، وتستقبلها تطبيقات العميل عبر اتصال WebSocket مستمر. يعمل Pusher كوسيط بين الناشرين والمشتركين.
عندما يرسل الخادم حدثاً عبر طلب POST إلى API Pusher، تحدد المنصة القناة المستهدفة وتوزع الرسالة على جميع العملاء المشتركين في تلك القناة. يستقبل العملاء الحدث عبر اتصال WebSocket مفتوح بالفعل، مما يوفر زمن استجابة 50–100 مللي ثانية حسب الموقع الجغرافي.
يقوم كل عميل بإنشاء اتصال عبر Pusher Client SDK، الذي يختار تلقائياً طريقة النقل (WebSocket — أولوية، HTTP long-polling — احتياطي). يدير SDK إعادة الاتصال وتسلسل البيانات ومعالجة الأخطاء دون تدخل المطور. وفقاً لـ التوثيق الفني لـ Pusher (2025)، وقت إعادة الاتصال بعد انقطاع الشبكة أقل من ثانية واحدة.
يتكون النظام من ثلاثة مكونات: Pusher Server API (نقاط نهاية REST لنشر الأحداث)، Pusher Client SDK (مكتبات للاشتراك في الأحداث) و Pusher WebHook (إشعارات الخادم بأحداث الاتصال/قطع الاتصال). تعمل جميع المكونات بشكل غير متزامن ومستقل.
Pusher Channels يدعم ثلاثة أنواع من القنوات، كل منها مصمم لحالات استخدام مختلفة. يحدد نوع القناة مستوى الوصول وآلية المصادقة والإمكانيات المتاحة.
| نوع القناة | البادئة | المصادقة | الاستخدام |
|---|---|---|---|
| Public | channel- | غير مطلوبة | بيانات عامة: أسعار العملات، الطقس، تغذية الأخبار |
| Private | private- | توقيع الطلب على الخادم | إشعارات شخصية، دردشات، بيانات المستخدم |
| Presence | presence- | توقيع + معلومات المستخدم | الحالة عبر الإنترنت، غرف اللعب، التحرير التعاوني |
القنوات العامة (Public) متاحة لجميع العملاء دون مصادقة ومناسبة للبيانات البثية. القنوات الخاصة (Private) تتطلب مصادقة عبر خادم المطور: يرسل العميل طلباً إلى backend الخاص به مع socket_id و channel_name، يوقع الخادم الطلب بالمفتاح السري لـ Pusher ويعيد رمز المصادقة. قنوات الحضور (Presence) تنقل بالإضافة إلى ذلك معلومات المستخدم (user_id، user_info) وتسمح بتتبع من هو متصل حالياً.
وفقاً لـ توثيق Pusher (2025)، الحد الأقصى لعدد العملاء المتصلين في وقت واحد لكل قناة هو 10,000 للقنوات public و private. بالنسبة لقنوات presence، الحد هو 10,000 مستخدم لكل قناة مع دعم يصل إلى 100,000 مستخدم لكل تطبيق.
نموذج أحداث Pusher يعتمد على أحداث مسماة يتم نشرها في قناة. لكل حدث اسم (حد أقصى 200 حرف)، وبيانات بتنسيق JSON و socket_id اختياري لمنع الإرسال المكرر إلى بادئ الحدث.
المشغلات هي طلبات HTTP POST إلى API Pusher التي تنشر حدثاً في قناة. تنسيق الطلب: POST /apps/{app_id}/events مع نص يحتوي على channel و name و data. يدعم Pusher Server API المشغلات من أي بيئة خادم عبر المكتبات الرسمية (PHP، Ruby، Python، Go، Java، Node.js).
يدعم Pusher المشغلات المجمعة — نشر حدث واحد في قنوات متعددة بطلب واحد. هذا أكثر كفاءة من الاستدعاءات المتسلسلة ويضمن التسليم الذري. وفقاً لـ اختبارات أداء Pusher (2024)، يستغرق المشغل المجمع لـ 100 قناة 30–50 مللي ثانية، بينما تستغرق الاستدعاءات المتسلسلة 2–5 ثوانٍ.
Pusher WebHook يسمح لخادمك بتلقي الإشعارات حول أحداث البنية التحتية: اتصال العميل، قطع الاتصال، حدوث خطأ. يتم توقيع طلبات Webhook باستخدام HMAC-SHA256 للتحقق. هذا أمر بالغ الأهمية للتسجيل والتحليل ومزامنة الحالة.
دمج Pusher يتكون من جزأين: جانب الخادم (نشر الأحداث) وجانب العميل (الاشتراك في الأحداث). دعنا نلقي نظرة على مثال باستخدام Node.js لجزء الخادم وJavaScript لجزء العميل. أولاً، تحتاج إلى إنشاء تطبيق في لوحة تحكم Pusher والحصول على بيانات الاعتماد.
وفقاً لـ توثيق Pusher (2025)، الخطة الأساسية (Sandbox) تشمل حتى 100 اتصال متزامن و200,000 رسالة في اليوم — كافية للتطوير والاختبار. خطط الإنتاج تبدأ من $49 شهرياً لـ 1000 اتصال.
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 يوفر SDK لنظام iOS (Swift) وAndroid (Java/Kotlin) التي تكرر بالكامل وظائف عميل JavaScript. تدعم SDKs المحمولة نفس أنواع القنوات وآلية المصادقة ونموذج الأحداث. بالنسبة لـ React Native، تتوفر حزمة pusher-js التي تعمل عبر جسر JavaScript.
على الأجهزة المحمولة، يتعامل Pusher SDK تلقائياً مع التبديل بين Wi-Fi والشبكات المحمولة باستخدام آلية إعادة اتصال مع تأخير تصاعدي. هذا مهم بشكل خاص لتطبيقات iOS، حيث قد يغلق iOS اتصالات WebSocket قسراً أثناء العمل في الخلفية.
وفقاً لـ المدونة الفنية لـ Pusher (2024)، متوسط استهلاك حركة المرور لاتصال Pusher واحد هو 1–2 كيلوبايت في الدقيقة عند عدم وجود أحداث نشطة. يتم تحقيق ذلك من خلال بروتوكول heartbeat محسّن بفاصل زمني 30 ثانية. يمكن لتطبيق متوسط الحجم دعم ما يصل إلى 1000 اتصال Pusher متزامن دون التأثير بشكل كبير على عمر البطارية.
Pusher Beams هي خدمة إضافية لإرسال الإشعارات الفورية إلى الأجهزة المحمولة عبر APNs (iOS) و FCM (Android). تتكامل Beams مع Pusher Channels: يمكن لحدث من قناة أن يشغل تلقائياً إشعاراً فورياً إذا كان العميل غير متصل. هذا يحل مشكلة توصيل الرسائل عندما يكون التطبيق مغلقاً.
أمان Pusher يتم تنفيذه على عدة مستويات. يتم توقيع كل طلب إلى API Pusher باستخدام HMAC-SHA256 مع app_secret. هذا يضمن أن الخادم المصرح له فقط يمكنه نشر الأحداث. تستخدم SDKs الخاصة بالعميل app_key لتحديد التطبيق، ولكن الوصول إلى القنوات private و presence يتطلب مصادقة إضافية.
مصادقة القنوات الخاصة تتم في ثلاث خطوات: يستدعي العميل pusher.subscribe('private-channel')، يرسل Pusher Client SDK طلب HTTP إلى نقطة نهاية backend الخاصة بك (/pusher/auth)، يتحقق الخادم من أذونات المستخدم ويعيد رمز مصادقة موقع بالمفتاح السري. يتحقق Pusher من التوقيع ويسمح بالاشتراك.
يوصى باستخدام اتصالات TLS لجميع الطلبات (إعداد useTLS: true في SDK). يدعم Pusher أيضاً قيود الوصول حسب عنوان IP لطلبات الخادم إلى REST API. للخطط المؤسسية، يتوفر دعم VPC (السحابة الخاصة الافتراضية) والمجموعات المخصصة مع بنية تحتية معزولة.
الأسئلة الشائعة
Pusher هي خدمة مستضافة (SaaS) لا تتطلب إدارة خادم. Socket.IO هي مكتبة يجب نشرها بنفسك. Pusher أسهل في الإعداد ولكنه أغلى عند التوسع، Socket.IO يتطلب أعمال DevOps ولكنه أرخص في الأحجام الكبيرة.
الخطة المجانية Sandbox تشمل 100 اتصال و200,000 رسالة في اليوم. خطط الإنتاج تبدأ من $49/شهر (1000 اتصال، رسائل غير محدودة) وصولاً إلى enterprise بشروط مخصصة.
يستخدم Pusher WebSocket مع الرجوع التلقائي إلى HTTP long-polling. للرسائل الهامة، تتوفر قائمة انتظار على جانب Pusher مع ضمان التسليم مرة واحدة على الأقل (at-least-once).
نعم، Pusher متاح من روسيا عبر المجموعة الأوروبية (eu). زمن الاستجابة 50–100 مللي ثانية لمراكز البيانات الأوروبية. للمشاريع ذات متطلبات توطين البيانات، يوصى بالنظر في البدائل.
المنافسون الرئيسيون هم Ably (وظائف مشابهة، أسعار أكثر مرونة)، PubNub (شبكة توصيل عالمية)، Socket.IO (مستضاف ذاتياً) و Firebase Realtime Database (نظام Google البيئي).
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.