الانتقال من Pusher إلى PubSub دون تغيير الكود
معظم عمليات نقل البنية الفورية مؤلمة لأن مكتبة العميل تتغيّر. هذه ليست كذلك: يتحدّث PubSub بروتوكول Pusher، لذا تستمر مكتبة pusher-js التي تستخدمها بالعمل. ما يتغيّر هو وجهة الاتصال فقط.
ما الذي يتغيّر فعلاً
الإعداد المعتاد لـ Pusher يشير إلى خوادمه. للانتقال إلى PubSub تتجاوز العنوان:
import Pusher from "pusher-js";
const pusher = new Pusher(appKey, {
wsHost: "pubsub.nextmark.ae",
wsPort: 443,
forceTLS: true,
enabledTransports: ["ws", "wss"],
cluster: "mt1",
});
لا يزال cluster مطلوباً من pusher-js رغم أن PubSub يتجاهله — اتركه بأي قيمة.
توثيق القنوات الخاصة وقنوات التواجد
تحتاج القنوات الخاصة وقنوات التواجد إلى توقيع. وجّه المكتبة إلى نقاط PubSub:
const pusher = new Pusher(appKey, {
wsHost: "pubsub.nextmark.ae",
wsPort: 443,
forceTLS: true,
cluster: "mt1",
userAuthentication: {
endpoint: "https://pubsub.nextmark.ae/api/authorize",
transport: "ajax",
headers: { "X-APP-Key": appKey },
},
channelAuthorization: {
endpoint: "https://pubsub.nextmark.ae/api/channels/authorize",
transport: "ajax",
headersProvider: () => ({
Authorization: `Bearer ${token}`,
"X-APP-Key": appKey,
}),
},
});
تتحقّق نقطة التفويض من أن المستخدم مسموح له بالانضمام إلى القناة قبل التوقيع، فيبقى التحكّم بالصلاحيات لديك.
ما الذي يبقى كما هو
- الاشتراك والربط.
pusher.subscribe("orders")وchannel.bind("updated", handler)دون تغيير. - أنواع القنوات. العامة والخاصة وقنوات التواجد تعمل بالطريقة نفسها.
- النشر من الخادم. واجهة النشر متوافقة مع Pusher، لذا تعمل مكتبات الخادم والطلبات الموقّعة كما هي.
- أحداث العميل. الأحداث التي تبدأ بـ
client-على القنوات الخاصة تعمل ضمن حدود خطتك.
كيف تتحقّق من النقل
- وجّه نسخة تجريبية إلى PubSub وراقب نجاح الاتصال في وحدة التحكّم مع
enableLogging: true. - اشترك في قناة خاصة وتأكّد أن نقطة التفويض تُعيد توقيعاً لا خطأ 403.
- انشر حدثاً تجريبياً من خادمك وتأكّد من وصوله.
إذا نجحت الخطوات الثلاث فقد اكتمل النقل — لا توجد مرحلة ثانية.
لماذا تفعل ذلك الفرق في الخليج
يعمل PubSub من دبي. وهذا يعني عادةً للمستخدمين في الإمارات ودول الخليج وصولاً في أقل من 50 مللي ثانية بدل 200 مللي ثانية أو أكثر تُهدر في التوجيه إلى خوادم أوروبية أو أمريكية، مع إبقاء البيانات داخل الإمارات للتطبيقات الخاضعة لمتطلبات الحفظ المحلي.