أعاد Axios تدفّقًا. ما زال الملف قيد الكتابة.
انتظر قراءة الشبكة وكتابة الوجهة معًا عند التنزيل عبر وكيل SOCKS باستخدام Axios في Node.
عندما يحلّ Axios طلب Node باستخدام responseType: 'stream'، يكون الجسم جاهزًا للاستهلاك، لكن الملف لم يكتمل بعد. انتظر اكتمال نقل البيانات إلى وجهته:
import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';
const response = await client.get(url, { responseType: 'stream' });
await pipeline(response.data, createWriteStream(partPath));يستخدم هذا عميلًا مُهيّأً مسبقًا. يجب أن يدعم محوّله البروكسي المختار أو وكيل SOCKS؛ خيار البروكسي عبر HTTP المدمج في Axios ووكيل SOCKS آليتان منفصلتان. يوفّر التطبيق عنوان URL والمُهل الزمنية وسياسة الإلغاء.
استخدم مسارًا مؤقتًا مملوكًا لهذه العملية. حدّد كيفية التعامل مع التعارضات قبل إنشاء تدفّق الكتابة، حتى لا يزيل تنظيفُ ما بعد الفشل ملفَّ شخص آخر. الاستئناف المتعمّد يحتاج إلى سياسة خاصة به.
ينسّق pipeline القراءة والكتابة ويبلّغ عن فشلهما. استدعاء response.data.pipe(file) وتسجيل النجاح فورًا يتجاوز نقطة الاكتمال تلك. قد يحدث انقطاع في الشبكة أو امتلاء القرص بعد وصول استجابة HTTP صالحة؛ احتفظ بسياق الاستجابة والخطأ الذي أوقف مسار المعالجة.
بعد نجاح مسار المعالجة الذي تم انتظاره، نفّذ فحوص الأثر الخاصة بالتطبيق ثم انشر الاسم النهائي. الاكتمال يعني أن التدفّق استُهلك وكُتب وفق هذه الواجهات، لا أنه الإصدار أو المستند المتوقع. عند الفشل أو الإلغاء، احتفظ بالملف الجزئي أو احذفه وفق سياسة الاستئناف المختارة. يمكن لإشارة إلغاء أن توقف الطلب وعمليات التدفّق المعنية؛ لكنها لا تقرّر ما ينبغي أن يفعله التطبيق بالمخرج.