Node HTTP සර්වරය සාමාන්‍ය proxy ඉල්ලීමක් එහි request callback හරහා හසුරුවයි. CONNECT වෙනත් මාර්ගයක් ගනී: සර්වරය ඉල්ලීම, client socket සහ head buffer සමඟ connect නිකුත් කරයි.

එම සිදුවීම HTTP විග්‍රහය සහ ටනලය අතර භාරදීමයි. ටනල් කළ ගමනාගමනය සඳහා දිගටම භාවිත කළ හැකි සාමාන්‍ය ServerResponse වස්තුවක් නැත.

තර්කයඑය කුමක් ගෙන යයිද
reqCONNECT ඉල්ලීම, එහි ගමනාන්ත අධිකාරිය සහ headers ඇතුළුව
clientSocketclient වෙත ආපසු යන සම්බන්ධතාවය
headNode දැනටමත් HTTP headers පසුව කියවා ඇති ටනල් දත්ත, සමහරවිට හිස්

bytes යැවීමට පෙර HTTP තීරණය අවසන් කරන්න

ඉල්ලා ඇති host සහ port වලංගු කරන්න, proxy හි ප්‍රවේශ සහ සත්‍යාපන ප්‍රතිපත්තිය යොදන්න, සහ upstream සම්බන්ධතාවය ගොඩනඟන්න. CONNECT service.example:443 වැනි අධිකාරියක් හඳුනා ගනී; සෑම කොලනයකදීම අන්ධ ලෙස බෙදීම වෙනුවට IPv6 අධිකාරීන් සැලකිල්ලට ගෙන එම ආකෘතිය විග්‍රහ කරන්න.

ටනලය පිළිගත් විට, සාර්ථක HTTP ප්‍රතිචාරය සහ එය අවසන් කරන හිස් පේළිය යවන්න. පසුව client socket වෙතින් එන පසුකාලීන bytes සමඟ ඉදිරියට යාමට පෙර ඕනෑම head byte එකක් upstream යවන්න. නව දත්ත ශ්‍රාවකයක් සම්බන්ධ කිරීමෙන් දැනටමත් හසුරුවන්නාට වෙන වෙනම ලබා දී ඇති buffer එකක් නැවත ලබා ගත නොහැක.

Node හි නිල ටනල් උදාහරණය stream දිශා දෙක සම්බන්ධ කිරීමට පෙර serverSocket.write(head) සමඟ එම භාරදීම සිදු කරයි. එහි කුඩා උදාහරණය සංක්‍රාන්තිය පෙන්වයි; යෙදවූ proxy එකකට සීමිත සම්බන්ධතා උත්සාහ, ප්‍රවේශ පාලන සහ ජීවන චක්‍ර කළමනාකරණයද අවශ්‍ය වේ.

සාර්ථකත්වයෙන් පසු, bytes සේවා ප්‍රොටෝකෝලයට අයත්

සාර්ථක CONNECT ප්‍රතිචාරයක් සම්බන්ධතාවය byte stream එකක් බවට පත් කරයි. ඉලක්කය HTTPS අඩවියක් නම්, එහි TLS හුවමාරුව එම stream එක තුළ සිදු වේ. ටනල් කිරීම පමණක් proxy එකට ආදේශක වෙබ් අඩවි සහතිකයක් නිකුත් කිරීමට බල නොකරයි.

CONNECT පිළිගැනීමට පෙර, HTTP දෝෂයක් ප්‍රතික්ෂේප කළ හේතුව පැහැදිලි කළ හැක. පිළිගැනීමෙන් පසු, stream එකට HTTP 500 ලිවීම ටනල් ප්‍රොටෝකෝලයට bytes එන්නත් කරයි. ඒ වෙනුවට පසුකාලීන අසාර්ථකත්වවලදී සුදුසු සම්බන්ධතා අවසන් කරන්න හෝ විනාශ කරන්න.

දිශා දෙකම පසුබල පීඩනය දැනුවත් stream හසුරුවීම සමඟ සම්බන්ධ කරන්න, සහ end, error සහ close සිදුවීම් සහකරු අවසන් කරන ආකාරය තීරණය කරන්න. ආරම්භක head buffer එක එම හිමිකාරිත්ව ආකෘතියේ කොටසක් ලෙස රැක ගන්න; එය යෙදුම් දත්ත වන අතර ඉවතලිය යුතු අමතර HTTP headers නොවේ.

අදාළ ලිපි