const { pipeline } = require('node:stream');

pipeline(upstreamResponse, clientResponse, (error) => {
  if (error) console.error('Proxy response failed:', error);
});

این مسیر بدنه را پس از انتخاب هدف، درخواست به مبدأ و آماده‌سازی وضعیت و سرایندهای پاسخ به کار ببرید. جریان‌های Node معمولاً Buffer می‌دهند؛ آن‌ها را برای تصاویر یا سایر محتوای دودویی تغییرنکرده در یک رشته جمع نکنید.

pipeline فشار معکوس را هماهنگ می‌کند و خطاها را منتشر می‌سازد. در صورت خطا ممکن است مقصد را نابود کند، پس فرض نکنید که پس از آن می‌توان پاسخ خطای HTTP دیگری فرستاد. این قطعه یک سرور پروکسی کامل نیست.

برای بایت‌های عبوری، فراداده‌های مرتبط با نمایش مانند نوع رسانه و رمزگذاری محتوا را حفظ کنید و فیلدهای مخصوص هر گام را با قواعد ارسال مدیریت کنید. مقایسهٔ بایت‌های gzip و سرایندهای پاسخ متناظر انتخاب میان نمایش رمزگذاری‌شده و رمزگشایی‌شده را نشان می‌دهد.

بازنویسی عمدی HTML مسیر دیگری می‌خواهد: نوع رسانه را تشخیص دهید، فشرده‌سازی و مجموعه نویسه را مدیریت کنید، متن را تبدیل کنید و برای بایت‌های جدید فراداده بسازید. Content-Length قدیمی نمی‌تواند بدنهٔ تغییرکرده را توصیف کند.

Buffer.concat وقتی بافرکردن کامل لازم است می‌تواند محتوای دودویی را حفظ کند، اما کل بدنه را در حافظه نگه می‌دارد. جریان تصویر عبوری به این هزینه نیاز ندارد.

مقالات مرتبط