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

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

লক্ষ্য নির্বাচন, আপস্ট্রিম অনুরোধ এবং ডাউনস্ট্রিম স্টেটাস ও হেডার প্রস্তুতির পরে এই বডি পথটি ব্যবহার করুন। Node স্ট্রিম সাধারণত Buffer দেয়; ছবি বা অন্য অপরিবর্তিত বাইনারি কনটেন্টের জন্য সেগুলোকে স্ট্রিংয়ে জমা করবেন না।

pipeline ব্যাকপ্রেশার সমন্বয় করে এবং ব্যর্থতা ছড়িয়ে দেয়। ত্রুটির সময় এটি গন্তব্য ধ্বংস করতে পারে, তাই এর পরে আরেকটি HTTP ত্রুটি প্রতিক্রিয়া পাঠানো যাবে বলে ধরে নেবেন না। এই অংশটি সম্পূর্ণ প্রক্সি সার্ভার নয়।

পাস-থ্রু বাইটের জন্য, মিডিয়া টাইপ ও কনটেন্ট এনকোডিংয়ের মতো প্রাসঙ্গিক উপস্থাপন মেটাডেটা সংরক্ষণ করুন এবং hop-নির্দিষ্ট ফিল্ডগুলো ফরওয়ার্ডিং নিয়মে সামলান। gzip বাইট ও মিলে যাওয়া প্রতিক্রিয়া হেডারএর তুলনা এনকোডেড বনাম ডিকোডেড উপস্থাপনার পছন্দ দেখায়।

ইচ্ছাকৃত HTML পুনর্লিখনের জন্য অন্য পথ দরকার: এর মিডিয়া টাইপ চিনুন, কম্প্রেশন ও ক্যারেক্টার সেট সামলান, পাঠ রূপান্তর করুন এবং নতুন বাইটের জন্য মেটাডেটা তৈরি করুন। পুরোনো Content-Length পরিবর্তিত বডি বর্ণনা করতে পারে না।

Buffer.concat সম্পূর্ণ বাফারিং প্রয়োজন হলে বাইনারি কনটেন্ট সংরক্ষণ করতে পারে, কিন্তু পুরো বডি মেমরিতে রাখে। পাস-থ্রু ছবির স্ট্রিমের সেই খরচ দরকার নেই।

সম্পর্কিত নিবন্ধ