أحداث الخادم SSE وبث الملفات
أحداث الخادم SSE وبث الملفات
ليست WebSockets الخيار الوحيد للتحديثات الفورية. تبث Server-Sent Events تحديثات باتجاه واحد عبر HTTP عادي، وتسمح StreamableFile للمتحكم بإرجاع ملفات كبيرة دون تحميل كامل الحمولة في الذاكرة.
الفكرة الأساسية
تدور هذه الميزة حول التحكم في كيفية تنظيم التطبيق وسلوكه وقت التشغيل. النقاط التالية هي ما يجب أن يعرفه المطور قبل استخدامها في مشروع حقيقي:
- تصلح SSE لتحديثات التقدم والتنبيهات ولوحات المتابعة والسجلات حيث يدفع الخادم ويستمع المتصفح.
- تعيد معالجات @Sse() كائناً Observable من MessageEvent.
- تغلف StreamableFile تيار قراءة وتتكامل مع معالجة استجابة Nest.
- اضبط Content-Type و Content-Disposition ورؤوس التخزين المؤقت الصحيحة للتنزيلات.
- للملفات الكبيرة جداً أو الخاصة، فكر في روابط تخزين كائنات موقعة بدلاً من تمرير كل بايت عبر خادم التطبيق.
مثال عملي
يوضح المثال التالي الشكل العملي للفكرة داخل مشروع NestJS. ليست الغاية حفظ الكود، بل فهم مكانه في المعمارية:
قائمة تطبيق إنتاجية
- استخدم SSE للتحديثات الحية باتجاه واحد وWebSockets للتعاون ثنائي الاتجاه.
- أغلق الـ observables عند قطع اتصال العملاء.
- اضبط رؤوس التنزيل صراحة.
- تجنب تخزين الصادرات الكبيرة في الذاكرة.
الخلاصة
يغطي هذا الدرس جزءاً متقدماً من NestJS يجب فهمه عند بناء تطبيقات مؤسسية. ركّز على الحدود الواضحة، والسلوك القابل للاختبار، واختيار الأداة المناسبة للسياق بدلاً من استخدام كل ميزة في كل مكان.