التوافق
خلفية لحظية متوافقة مع Pusher
PushCaster يتحدّث الإصدار 7 من بروتوكول Pusher Channels على السلك. الانتقال إعداد لا إعادة كتابة — وهذه الصفحة هي القائمة الدقيقة لما يتغيّر.
لا حاجة إلى إعادة كتابة التطبيق. تغيير إعدادات الاتصال وحده يكفي. من ثلاثة إلى ستة أسطر لكل تطبيق؛ ومع Laravel، تغيير في .env ولا شيء غير ذلك. ليس drop-in ولا zero-config: يجب ضبط المضيف، وبيانات الاعتماد جديدة.
ما الذي يبقى كما هو
السلك، والمكتبات، ومصافحة المصادقة
التوافق هنا يعني البروتوكول نفسه لا مجرد تشابه — صيغ طلب/استجابة متوافقة، ودلالات أحداث، ومخطط مصادقة.
| المجال | ما لا يتغيّر |
|---|---|
| البروتوكول | الإصدار 7 من بروتوكول Pusher Channels على السلك. |
| مكتبات العميل | pusher-js وLaravel Echo ومكتبات الجوال الرسمية، دون تعديل. |
| مكتبات الخادم | pusher-php-server وpusher-http-node ومكتبات Python وGo وRuby وJava. |
| التواقيع | مخطط توقيع وتقييس متوافق. |
| أنواع القناة | public وprivate وpresence وprivate-encrypted، بالبادئات نفسها. |
| تخويل الاشتراك | POST /pusher/auth يحتفظ بشكل طلبه وجوابه. |
| client events | بين المشتركين على قنوات الـ private والـ presence، كما كان. |
| Webhooks | أسماء الحقول والترويسات نفسها، ومنها channel_occupied وmember_added وcache_miss. |
إصدارات SDK المُختبَرة
متوافق مع إصدارات Pusher SDK المذكورة، دون تعديل تلك الـ SDK.
| SDK | الإصدار المُختبَر |
|---|---|
| pusher-js (browser) | 8.6.0 |
| pusher/pusher-php-server | 7.3.0 |
| pusher (Node.js) | 5.3.4 |
| pusher (Python) | 3.3.4 |
| pusher-http-go | v5.1.1 |
| pusher (Ruby) | 2.1.1 |
| laravel/framework (Echo) | ^13.0 |
ما الذي يتغيّر
المضيف، وبيانات الاعتماد
pusher-js يثبّت ws-<عنقود>.pusher.com ما لم يُمرَّر wsHost، ومكتبات الخادم تذهب افتراضيًا إلى api-<عنقود>.pusher.com ما لم يُمرَّر مضيف. تجاوز هذين هو الانتقال كله.
const pusher = new Pusher(APP_KEY, {- cluster: 'eu',+ wsHost: 'ws-eu1.pushcaster.io',+ wsPort: 443,+ forceTLS: true, })التغيير الكامل، بحسب اللغة
// before — talking to Pushernew Pusher(KEY, { cluster: 'eu' })// after — talking to PushCaster (the key & secret are new)new Pusher(KEY, { wsHost: 'ws-eu1.pushcaster.io', wsPort: 443, forceTLS: true,})ضبط المضيف يفوت بسهولة. إن تُرك على قيمته الافتراضية، تتحدّث المكتبة مع خوادم Pusher، ويشير الخطأ إلى key غير صحيح بدل وجهة خاطئة.
الـ app id والمفتاح والسرّ جديدة. بيانات الاعتماد الحالية لا تنتقل. اختر عنقود في الوقت نفسه — فهو جزء من المضيف.
الفروق المعروفة
ثلاثة أشياء ليست متطابقة
ادّعاء التوافق لا ينفع إلا مع استثناءاته. وهذه الثلاثة قد تغيّر قرارًا في التصميم.
عنقود واحد، دون اتحاد
العنقود حدّ عزل لا تلميح جغرافي: له عُقده وNATS وRedis الخاصة به، ولا تسليم بين العناقيد. يعيش التطبيق في عنقود واحد بالضبط، فالتطبيقان اللذان يجب أن يتحدثا معًا ينتميان إلى العنقود نفسه.
المضيف ليس اسم العنقود
cluster: "eu" وحده لا يصل إلى PushCaster. تضبط wsHost في العميل وhost في مكتبة الخادم. تعديل من ثلاثة خيارات، وكل ترحيل يقوم به.
لا توجد واجهة إحصاءات
لا يوجد هنا مكافئ لنقطة نهاية الإحصاءات في لوحة تحكم Pusher. الاستهلاك يأتي من واجهتنا البرمجية، والمقاييس التشغيلية من Prometheus. لا تستدعي أي مكتبة خادم رسمية تلك النقطة، فالأمر يخص أدواتك لا تطبيقك.
الانتقال
اختبر قنوات الـ private والـ presence أولًا
قنوات الـ public تظلّ تنجح حتى لو كان شيء خاطئًا — فهي لا تسأل خادمك شيئًا. المضيف القديم أو السرّ غير المطابق لا يظهر إلا في اشتراكات private وpresence.
- 01أنشئ التطبيقالعنقود الذي تختاره جزء من كل مضيف أنت على وشك ضبطه.
- 02اضبط المضيف في الموضعينالعميل يحتاج wsHost، والخادم يحتاج مضيف. أغفِل أحدهما ويبقى نصف تطبيقك يتحدّث مع Pusher.
- 03بدّل بيانات الاعتمادالثلاثة تتغيّر معًا. key جديد مع سرّ قديم لا يفشل إلا في الاشتراكات الموقَّعة — ولهذا ينجو من اختبار سريع.
- 04اشترِك في قناة خاصهذا يشغّل POST /pusher/auth ويثبت أن السرّ يطابق الـ app id.
- 05انضمّ إلى قناة من نوع presenceهذا يؤكّد قائمة الأعضاء وevents الدخول والخروج.
- 06انشُر من الخادمهذا يؤكّد مضيف النشر والتوقيع من الطرف إلى الطرف.
أنشئ تطبيقًا ووجِّه إليه عميلًا واحدًا.
Pusher علامة تجارية تخص مالكها. PushCaster خدمة مستقلة، وليست تابعة لـ Pusher ولا معتمدة منه. أسماء المكتبات مستخدمة للوصف فقط.