Pusher — ما هي، منصة الوقت الفعلي والتكامل مع التطبيقات

المؤلف: IT Sectr نُشر: 2026-06-01 وقت القراءة: 8 دق

Pusher: خدمة مستضافة للاتصال ثنائي الاتجاه في الوقت الفعلي، توفر بنية تحتية للقنوات والأحداث وإشعارات webhook. إنها توفر على المطور عناء نشر خادم WebSocket خاص به وتضمن توصيل الرسائل لملايين الأجهزة. وفقاً لـ التوثيق الرسمي لـ Pusher (2025)، تعالج الخدمة أكثر من 40 مليار رسالة شهرياً حول العالم.

الرئيسية

  • Pusher — خدمة سحابية للرسائل الفورية لا تتطلب إدارة خادم خاص.
  • القنوات والأحداث — يتم نشر الرسائل عبر قنوات مسماة تدعم الأنواع: public، private، presence.
  • نقل WebSocket — يتصل العملاء عبر WebSocket مع الرجوع إلى HTTP polling.
  • تكامل Webhook — يتم تسليم أحداث الخادم إلى backend الخاص بك عبر خطافات HTTP.
  • SDK لجميع المنصات — عملاء جاهزون لـ JavaScript وiOS وAndroid وReact Native ولغات الخادم.

ما هو Pusher؟

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

تم إطلاق Pusher في 2011 كواحدة من أولى الخدمات المستضافة لـ WebSocket. في 2014، قدمت الشركة Pusher Channels — البنية الحالية مع دعم القنوات private و presence. في 2017، تمت إضافة دعم webhook للأحداث من جانب الخادم. في 2022، أطلق Pusher خدمة Pusher Beams للإشعارات الفورية للمنصات المحمولة.

تختلف بنية Pusher عن الحلول المستضافة ذاتياً في أن جميع معالجة الاشتراكات وإدارة الاتصالات وتوجيه الأحداث تتم على جانب Pusher Cloud. يدير المطور فقط مصادقة القنوات private عبر backend الخاص به.

كيف يعمل Pusher

بنية Pusher تعتمد على نموذج الناشر-المشترك. تنشر تطبيقات الخادم الأحداث عبر REST API الخاص بـ Pusher، وتستقبلها تطبيقات العميل عبر اتصال WebSocket مستمر. يعمل Pusher كوسيط بين الناشرين والمشتركين.

عندما يرسل الخادم حدثاً عبر طلب POST إلى API Pusher، تحدد المنصة القناة المستهدفة وتوزع الرسالة على جميع العملاء المشتركين في تلك القناة. يستقبل العملاء الحدث عبر اتصال WebSocket مفتوح بالفعل، مما يوفر زمن استجابة 50–100 مللي ثانية حسب الموقع الجغرافي.

يقوم كل عميل بإنشاء اتصال عبر Pusher Client SDK، الذي يختار تلقائياً طريقة النقل (WebSocket — أولوية، HTTP long-polling — احتياطي). يدير SDK إعادة الاتصال وتسلسل البيانات ومعالجة الأخطاء دون تدخل المطور. وفقاً لـ التوثيق الفني لـ Pusher (2025)، وقت إعادة الاتصال بعد انقطاع الشبكة أقل من ثانية واحدة.

مكونات Pusher

يتكون النظام من ثلاثة مكونات: Pusher Server API (نقاط نهاية REST لنشر الأحداث)، Pusher Client SDK (مكتبات للاشتراك في الأحداث) و Pusher WebHook (إشعارات الخادم بأحداث الاتصال/قطع الاتصال). تعمل جميع المكونات بشكل غير متزامن ومستقل.

أنواع قنوات Pusher

Pusher Channels يدعم ثلاثة أنواع من القنوات، كل منها مصمم لحالات استخدام مختلفة. يحدد نوع القناة مستوى الوصول وآلية المصادقة والإمكانيات المتاحة.

نوع القناةالبادئةالمصادقةالاستخدام
Publicchannel-غير مطلوبةبيانات عامة: أسعار العملات، الطقس، تغذية الأخبار
Privateprivate-توقيع الطلب على الخادمإشعارات شخصية، دردشات، بيانات المستخدم
Presencepresence-توقيع + معلومات المستخدمالحالة عبر الإنترنت، غرف اللعب، التحرير التعاوني

القنوات العامة (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

نموذج أحداث 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 ثوانٍ.

تكامل Webhook

Pusher WebHook يسمح لخادمك بتلقي الإشعارات حول أحداث البنية التحتية: اتصال العميل، قطع الاتصال، حدوث خطأ. يتم توقيع طلبات Webhook باستخدام HMAC-SHA256 للتحقق. هذا أمر بالغ الأهمية للتسجيل والتحليل ومزامنة الحالة.

كيفية دمج Pusher في مشروع

دمج Pusher يتكون من جزأين: جانب الخادم (نشر الأحداث) وجانب العميل (الاشتراك في الأحداث). دعنا نلقي نظرة على مثال باستخدام Node.js لجزء الخادم وJavaScript لجزء العميل. أولاً، تحتاج إلى إنشاء تطبيق في لوحة تحكم Pusher والحصول على بيانات الاعتماد.

وفقاً لـ توثيق Pusher (2025)، الخطة الأساسية (Sandbox) تشمل حتى 100 اتصال متزامن و200,000 رسالة في اليوم — كافية للتطوير والاختبار. خطط الإنتاج تبدأ من $49 شهرياً لـ 1000 اتصال.

كود الخادم: نشر حدث

js
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);

كود العميل: الاشتراك في الأحداث

js
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 في التطبيقات المحمولة

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 للإشعارات الفورية

Pusher Beams هي خدمة إضافية لإرسال الإشعارات الفورية إلى الأجهزة المحمولة عبر APNs (iOS) و FCM (Android). تتكامل Beams مع Pusher Channels: يمكن لحدث من قناة أن يشغل تلقائياً إشعاراً فورياً إذا كان العميل غير متصل. هذا يحل مشكلة توصيل الرسائل عندما يكون التطبيق مغلقاً.

أمان ومصادقة Pusher

أمان 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 عن Socket.IO؟

Pusher هي خدمة مستضافة (SaaS) لا تتطلب إدارة خادم. Socket.IO هي مكتبة يجب نشرها بنفسك. Pusher أسهل في الإعداد ولكنه أغلى عند التوسع، Socket.IO يتطلب أعمال DevOps ولكنه أرخص في الأحجام الكبيرة.

كم تكلفة Pusher؟

الخطة المجانية Sandbox تشمل 100 اتصال و200,000 رسالة في اليوم. خطط الإنتاج تبدأ من $49/شهر (1000 اتصال، رسائل غير محدودة) وصولاً إلى enterprise بشروط مخصصة.

كيف يضمن Pusher توصيل الرسائل؟

يستخدم Pusher WebSocket مع الرجوع التلقائي إلى HTTP long-polling. للرسائل الهامة، تتوفر قائمة انتظار على جانب Pusher مع ضمان التسليم مرة واحدة على الأقل (at-least-once).

هل يمكن استخدام Pusher في روسيا؟

نعم، Pusher متاح من روسيا عبر المجموعة الأوروبية (eu). زمن الاستجابة 50–100 مللي ثانية لمراكز البيانات الأوروبية. للمشاريع ذات متطلبات توطين البيانات، يوصى بالنظر في البدائل.

ما هي بدائل Pusher الموجودة؟

المنافسون الرئيسيون هم Ably (وظائف مشابهة، أسعار أكثر مرونة)، PubNub (شبكة توصيل عالمية)، Socket.IO (مستضاف ذاتياً) و Firebase Realtime Database (نظام Google البيئي).

الخلاصة

  • Pusher — خدمة SaaS سحابية للرسائل الفورية لا تتطلب إدارة البنية التحتية للخادم الخاص بك.
  • ثلاثة أنواع من القنوات — public (بدون مصادقة)، private (بتوقيع) و presence (مع تتبع المستخدمين) — تغطي جميع السيناريوهات.
  • نموذج الأحداث يعتمد على أحداث مسماة مع حمولة JSON، منشورة عبر REST API.
  • SDK المحمولة لنظامي iOS وAndroid تدعم إعادة الاتصال التلقائي واستهلاك حركة المرور المحسّن.
  • الأمان مضمون من خلال توقيع HMAC للطلبات وتشفير TLS ومصادقة القنوات private عبر backend.
  • Pusher Beams يضيف إشعارات فورية للتوصيل دون اتصال عبر APNs و FCM.
  • للمشاريع الصغيرة ذات البداية السريعة، Pusher هو الأمثل؛ لعدد كبير من الاتصالات، Socket.IO المستضاف ذاتياً أكثر فعالية من حيث التكلفة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا