المقدمة
🎯 ماذا يفعل هذا الموديل؟
يتيح لك موديل WS (WebSocket) استقبال إشعارات في الوقت الحقيقي - تحديثات المحتوى، تغييرات الطلبات، إجراءات المستخدمين - من خلال إنشاء اتصالات دائمة للحصول على تحديثات فورية دون الحاجة للاستعلام المتكرر، مما يمكّن من ميزات حية مثل الإشعارات، الدردشة الحية، ولوحات المعلومات في الوقت الحقيقي.
فكر في الأمر كنظام إشعارات في الوقت الحقيقي - بدلاً من السؤال المتكرر "هل هناك شيء جديد؟" (الاستعلام المتكرر)، يبقي WebSocket الاتصال مفتوحًا ويدفع الخادم التحديثات إليك على الفور عند حدوث الأحداث.
📖 شرح بسيط
تحتاج كل تطبيق حديث إلى تحديثات في الوقت الحقيقي:
- 🔔 إشعارات حية - تنبيهات فورية عند حدوث شيء ما
- 💬 دردشة حية - رسائل في الوقت الحقيقي بين المستخدمين
- 📊 لوحات معلومات حية - إحصائيات ومقاييس تتحدث تلقائيًا
- 🛒 تحديثات الطلبات - تغييرات فورية في حالة الطلب
- 📝 تحديثات المحتوى - تغييرات ونشر محتوى حي
- 👥 نشاط المستخدم - وجود وإجراءات المستخدم في الوقت الحقيقي
- 🔄 مزامنة البيانات - مزامنة تلقائية عبر الأجهزة
المشكلة مع الاستعلام المتكرر (الطلبات المتكررة):
// ❌ سيء - الاستعلام كل 5 ثوانٍ
setInterval(async () => {
const orders = await Orders.getOrders();
// تحقق مما إذا كان هناك أي تغيير
// يهدر عرض النطاق الترددي، يؤخر التحديثات، يحمّل الخادم
}, 5000);
المشكلات:
- 🔋 استنزاف البطارية - الطلبات المستمرة تهدر الطاقة
- 📡 هدر الشبكة - معظم الطلبات تعود "بدون تغييرات"
- ⏱️ تأخير التحديثات - تأخير يصل إلى 5 ثوانٍ
- 🖥️ حمولة الخادم - طلبات غير ضرورية كل بضع ثوانٍ
حل WebSocket:
// ✅ جيد - اتصال WebSocket في الوقت الحقيقي
const { WS } = defineOneEntry('https://your-site.oneentry.cloud', {
token: 'your-app-token'
});
// الاشتراك في الأحداث
WS.subscribe('order.created', (order) => {
console.log('تم استلام طلب جديد!', order);
// إشعار فوري، لا استعلام!
});
WS.subscribe('content.updated', (content) => {
console.log('تم تحديث المحتوى!', content);
// تحديث واجهة المستخدم على الفور
});
الفوائد:
- 🔋 فعال - اتصال دائم واحد
- 📡 في الوقت الحقيقي - تحديثات فورية، بدون تأخير
- ⏱️ زمن استجابة منخفض - تسليم الإشعارات في أقل من ثانية
- 🖥️ حمولة مخفضة - يدفع الخادم فقط عند الحاجة
✨ المفاهيم الأساسية
ما هو WebSocket؟
WebSocket هو اتصال دائم ثنائي الاتجاه بين العميل والخادم:
- اتصال دائم - يبقى مفتوحًا، بدون مصافحات متكررة
- ثنائي الاتجاه - يمكن لكل من العميل والخادم إرسال الرسائل
- في الوقت الحقيقي - تسليم الرسائل الفوري
- معتمد على الأحداث - الاشتراك في أحداث محددة
- فعال - تكلفة منخفضة مقارنة بالاستعلام عبر HTTP