Node.js પ્રોક્સીમાં બાઈનરી ઇમેજ પ્રતિસાદ જાળવી રાખો
Node ફોરવર્ડ પ્રોક્સી દ્વારા બાઈનરી બોડી પસાર કરો અને ટેક્સ્ટ ડિકોડિંગ ફક્ત ઇરાદાપૂર્વકના ટેક્સ્ટ રૂપાંતરણ માટે રાખો.
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 સંપૂર્ણ બફરિંગ જરૂરી હોય ત્યારે બાઈનરી સામગ્રી જાળવી શકે છે, પણ આખી બોડી મેમરીમાં રાખે છે. પસાર થતા ઇમેજ સ્ટ્રીમને એ ખર્ચની જરૂર નથી.