• 0

ماهي آلية عمل نظام الإشعارات في أكاديمية حسوب؟

ماهي آلية عمل نظام الإشعارات  في مواقع مثل أكاديمية حسوب مثلا أو حسوب io

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 2

بالنسبة لتنبيهات سطح المكتب: تطلب الإذن من المتصفح بالوصول لها -ثم المتصفح يرى هل لك الإذن وإن كان لا، يسأل المستخدم -> بعدما تحصل على الإذن يمكنك استخدام الواجهة البرمجية لتنبيهات سطح المكتب،

أما عن جلب التنبيهات من الخادوم يوجد العديد من الطرق أشهرها:

1. طلبات متعددة باستخدام Ajax: الحل الأسهل والأكثر شيوعًا، إلّا أنه يسبب بعض التحميل على الخادم( أي العتاد الكبير) والخادوم(أي البرمجية التي تعالج الطلبات) بسبب الطلبات المتعددة، أيضًا برمجيًا ليس جيدًا إن كانت هنالك حلولًا أُخرى متوّفرة، أيضًا هو المستخدم في حسوب IO بحسب آخر مرة كتبت إضافة له، وجدته يطلب طلبات متعددة.

2. إتصال مفتوح لجلب التحديثات SSE: تفتح إتصالًا بدون حدٍ أدني للطلب وتعالج الطلبات القادمة من الخادوم دونما إنقطاع، قد يكون الحل الأفضل في حالة البرمجة بلغة PHP وأشباهها التي لا تعطي حرية في التصنت على منفذ معين -هذا الشائع بالطبع يوجد بعض الـHacks لكنها لغة كتبتْ لِتصنع الصفح- لحسن الحظ المتصفحات توّفر API لذلك، كتبتُ هذا المقال عن استخدامها مع PHP في السابق.

3. مقبس(Socket) بين الخادوم والمتصفح: قديمًا لم تكن هنالك حلولًا جيدة لكن مع قدوم الـWebSocket أصبح ذلك سهلًا تفتح مقبسًا ترسل الردود بين الخادم والمتصفح بسهولة.

على الجانب:

مع الإصدار الجديد من بروتوكول HTTP الذي هو HTTP/2 بات يدعم إرسال ردودٍ متعددة بين الخادوم والمتصفح، لكنه حاليًا ما زال جديدًا، لننتظر قليلًا وسنجد الكثير من المكتبات على نغم *.js.

تمّ تعديل بواسطة يوسف سيد
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1
بتاريخ 9 ساعات قال zezo mohamed:

شكرا @يوسف سيدعلى الإجابة الجميلة
هل يمكنك توضيح أكثر كيف يمكن تطبيق الحل الأول وهو "طلبات متعددة باستخدام Ajax" أي ما هي خطوات وطريقة تنفيذه؟

مع أني لا أنصحك بهاته الطريقة، لديك ضربان للقيام بها:

1. استخدام الدالة setInterval لصنع مؤقت للطلبات: حل سيء جدًا جدًا، لأنّ العمل غير متزامن(async) قد يبدأ طلب قبل تحميل السابق، وتتكدث الطلبات دونما تنظيم.

2. دالة للطلب تستدعيها لأول مرة ثم بعد التحميل تطلب نفسها مجددًا وهكذا دواليك هذا الحل الأفضل في هاته الطريقة إلّا أني ما زلتُ أنصحك بـSSE.

للطلبات استخدم XMlHttpRequest أو مكتبة تساعدك في الطلبات لا أنصحك باستخدام مكتبة في البداية، أيضًا أظنُ أني كتبتُ مثالًا لذاك في مقال SSE ستجد الرابط في الرّد السابق.

تمّ تعديل بواسطة يوسف سيد

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

شكرا @يوسف سيدعلى الإجابة الجميلة
هل يمكنك توضيح أكثر كيف يمكن تطبيق الحل الأول وهو "طلبات متعددة باستخدام Ajax" أي ما هي خطوات وطريقة تنفيذه؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن