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 പൂർണ്ണ ബഫറിംഗ് ആവശ്യമുള്ളപ്പോൾ ബൈനറി ഉള്ളടക്കം സംരക്ഷിക്കാം, പക്ഷേ മുഴുവൻ ബോഡിയും മെമ്മറിയിൽ സൂക്ഷിക്കുന്നു. കടന്നുപോകുന്ന ഇമേജ് സ്ട്രീമിന് ആ ചെലവ് ആവശ്യമില്ല.

അനുബന്ധ ലേഖനങ്ങൾ