سؤال

أرغب في التعبئة بمعلومات في الوقت الفعلي ، وهناك وظيفة قياسية جميلة أريد تكرارها:

يحدث ذلك هنا عندك عندما تكون في عرض واحد من الأسئلة ، وكتابة إجابتك ، وتنبيهًا يظهر من أعلى قائلاً "هناك 3 إجابات أخبار ، انقر لتظهر"

يحدث أيضًا على Twitter "هناك 5 تغريدات جديدة في هذا البحث: انقر للتحديث"

أنا على دراية بالشهر الخادم والرمز الجانبي للعميل ، وما أبحث عنه هو المخطط الأساسي (ولا حتى رمز PSUEDO ، ولكن ربما اللغة الإنجليزية البسيطة) لكيفية حدوث شيء من هذا القبيل.

هل هناك وظيفة cron على الخادم الذي يعمل كل دقيقة ، تطلق إشارة إلى جزء من Ajax الذي تم إجراؤه منذ فترة طويلة على الصفحة؟

هل الصفحة نفسها استطلاع خادم؟

أي وجميع الحلول موضع ترحيب. شكرًا!

هل كانت مفيدة؟

المحلول

يمكنك تنفيذ ذلك باستخدام مكالمة Ajax تعمل على جانب العميل على فاصل منتظم باستخدام JavaScript setTimeout طريقة. سيكون لديك وظيفة JavaScript التي تستدعي طريقة جانب الخادم الخاص بك والتي تتحقق مما إذا كان التحديث قد حدث ، ويعرض أي تحديث ، ثم يستدعي SetTimeout للاتصال بنفسه.

كود مزيف:

function updateCheck()
{
  //make ajax call
  //do something if any update has occurred
  setTimeout("updateCheck()", 10000); //second param is in milliseconds
}

نصائح أخرى

من الجزء العلوي من رأسي ، سأقوم به عبر JavaScript - تعيين مهلة للتساؤل عن الخادم. هذا مجرد تخمين متعلم رغم ذلك.

يبدو أن هذا يستخدم تحديثًا دوريًا لتقديم طلب AJAX إلى عنوان URL مثل:

https://stackoverflow.com/posts/2307584/answer-activity-heartbeat

هذا يعيد نتيجة JSON:

{"Result":false,"Count":0}

Heres مثال على النتيجة عند وجود إجابة جديدة:

{"Result":true,"Count":1}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top