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

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

השתמשו במסלול הגוף הזה לאחר בחירת היעד, הבקשה למעלה והכנת הסטטוס והכותרות כלפי הלקוח. זרמי Node מספקים בדרך כלל Buffers; אל תצברו אותם למחרוזת עבור תמונות או תוכן בינארי אחר שאינו משתנה.

pipeline מתאם לחץ נגדי ומפיץ כשלים. הוא עלול להרוס את היעד בעת שגיאה, לכן אל תניחו שאפשר לשלוח לאחר מכן תגובת שגיאת HTTP נוספת. הקטע הזה אינו שרת פרוקסי מלא.

עבור בתים שעוברים, שמרו על מטא-נתוני ייצוג רלוונטיים כמו סוג המדיה וקידוד התוכן, וטפלו בשדות ייחודיים לכל קפיצה באמצעות כללי העברה. השוואה בין בתי gzip וכותרות תגובה תואמות מראה את הבחירה בין ייצוג מקודד לייצוג מפוענח.

שכתוב HTML מכוון דורש מסלול אחר: לזהות את סוג המדיה, לטפל בדחיסה ובמערך התווים, לשנות את הטקסט וליצור מטא-נתונים עבור הבתים החדשים. Content-Length הישן אינו יכול לתאר גוף שהשתנה.

Buffer.concat יכול לשמר תוכן בינארי כשנדרש חוצץ מלא, אך שומר את כל הגוף בזיכרון. זרם תמונה שעובר אינו זקוק לעלות הזו.

מאמרים קשורים