اذهب إلى المحتوى

السؤال

Recommended Posts

  • 2
نشر (معدل)

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

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

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

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

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

على الجانب:

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

تم التعديل في بواسطة يوسف سيد
  • 1
نشر (معدل)
بتاريخ 9 ساعات قال zezo mohamed:

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

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

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

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

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

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...