عن المشروع

يوفر هذا المستودع آلية إبقاء لخدمة ويب Render مجانية. يجمع بين سير عمل GitHub Actions وسكربت Node.js صغير يرسل طلبات HTTP GET دورية إلى عنوان هدف مُعد، بحيث لا تنام الخدمة بسبب عدم النشاط. المشكلة التي يعالجها: يمكن لمجدول GitHub Actions المجاني أن يؤخر الفواصل الزمنية القصيرة لـ cron مثل كل 5 دقائق عندما تكون خوادمه مشغولة، مما يترك فجوات بين عمليات التشغيل. تنام خدمات Render المجانية بعد حوالي 15 دقيقة بدون حركة مرور، لذا فإن فقدان إشارات ping قد يسبب بدءًا باردًا. النهج الموضوح في README: - جلسة نشطة مدتها 14 دقيقة: تعمل كل مهمة GitHub Actions لمدة 14 دقيقة تقريبًا وترسل ping كل 4 دقائق عند الدقائق 0 و4 و8 و12. - مشغلات cron متعددة: تُستخدم جداول مثل */10 * * * * و5,15,25,35,45,55 * * * * بحيث تستمر جلسات runner الجديدة في الانطلاق. - الهدف المعلن هو التغطية المستمرة، لأن إشارات ping كل 4 دقائق ضمن نافذة نشطة مدتها 14 دقيقة تظل تحت حد عدم النشاط البالغ 15 دقيقة. الميزات: - واجهات Node.js 22 الأصلية: يستخدم fetch() المدمجة وnode:timers/promises دون اعتمادات npm خارجية. - منطق إعادة المحاولة: يعيد المحاولة حتى 3 مرات مع تأخير 10 ثوانٍ عند أخطاء الشبكة أو استجابات غير 2xx. - مخرجات وحدة التحكم: يسجل طوابع ISO UTC الزمنية، ورموز حالة HTTP، وأزمنة الاستجابة بالمللي ثانية، ونتائج النجاح أو الفشل، وعدادات دورات الجلسة. - التشغيل اليدوي: يدعم workflow_dispatch للتشغيل الفوري. التكوين: يُعرّف عنوان الهدف أعلى ping.js باسم TARGET_URL، ويشير حاليًا إلى نقطة نهاية مستضافة على Render. يتطلب تغيير نقطة النهاية تعديل هذا الثابت ودفع التغيير. النشر: يوجه README المستخدمين إلى commit ودفع الملفات المحدثة إلى فرع main، وبعد ذلك يبدأ GitHub Actions جلسة ping النشطة.