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 पूर्ण बफरिङ आवश्यक हुँदा बाइनरी सामग्री सुरक्षित राख्न सक्छ, तर सम्पूर्ण बडी स्मृतिमा राख्छ। पास हुने छवि स्ट्रिमलाई त्यो लागत आवश्यक पर्दैन।

सम्बन्धित लेखहरू