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 పూర్తి బఫరింగ్ అవసరమైనప్పుడు బైనరీ కంటెంట్ను సంరక్షించగలదు, కానీ మొత్తం బాడీని మెమరీలో ఉంచుతుంది. గడిచే చిత్ర స్ట్రీమ్కు ఆ ఖర్చు అవసరం లేదు.