د Node.js CONNECT اداره کوونکي باید head بفر وساتي
د Node CONNECT ساکټ او head بفر د HTTP څخه تونل ته د تګ په پوله اداره کړئ، هغه بایټ وساتئ چې له سرلیکونو وروسته لوستل شوي دي.
د Node HTTP سرور عادي پروکسي غوښتنه د خپلې غوښتنې callback له لارې اداره کوي. CONNECT بله لار اخلي: سرور connect د غوښتنې، کلینټ ساکټ او head بفر سره صادروي.
هغه پېښه د HTTP تحلیل او تونل ترمنځ لاس ورکول دي. د تونل شوي ترافیک لپاره د کارولو دوام لپاره هیڅ عادي ServerResponse شی نشته.
| استدلال | څه وړي |
|---|---|
req | CONNECT غوښتنه، پشمول د هغې د مقصد واک او سرلیکونه |
clientSocket | کلینټ ته د بیرته تګ اړیکه |
head | د تونل معلومات چې Node دمخه د HTTP سرلیکونو وروسته لوستلي دي، کیدای شي خالي وي |
د بایټونو د لېږلو دمخه HTTP پریکړه بشپړه کړئ
غوښتل شوي هوسټ او پورټ تایید کړئ، د پروکسي د لاسرسي او تصدیق تګلاره پلي کړئ، او پورتنۍ اړیکه جوړه کړئ. CONNECT د service.example:443 په څیر واک پیژني؛ هغه بڼه د IPv6 واکونو په پام کې نیولو سره تحلیل کړئ، نه دا چې په هر دوو ټکو کې په ړوند ډول ووېشئ.
کله چې تونل ومنل شو، بریالۍ HTTP ځواب او د هغې پای ته رسیدونکې خالي کرښه ولېږئ. بیا د کلینټ ساکټ څخه د راتلونکو بایټونو سره د دوام دمخه هر head بایټ پورته ولېږئ. د معلوماتو نوی اوریدونکی نښلول نشي کولی هغه بفر بیرته راوړي چې دمخه اداره کوونکي ته جلا سپارل شوی وي.
د Node رسمي تونلینګ بېلګه هغه لاس ورکول د serverSocket.write(head) سره ترسره کوي دمخه لدې چې د جریان دواړه لوري ونښلوي. د هغې کوچنۍ بېلګه انتقال ښیي؛ ځای پرځای شوی پروکسي هم محدودې د اړیکې هڅې، د لاسرسي کنټرول او د ژوند دورې مدیریت ته اړتیا لري.
له بریالیتوب وروسته، بایټونه د خدمت پروتوکول دي
بریالۍ CONNECT ځواب اړیکه په بایټ جریان بدلوي. که هدف HTTPS سایت وي، د هغې TLS تبادله په همدې جریان کې روانه وي. یوازې تونل کول پروکسي ته اړتیا نه لري چې د بدیل ویبسایټ سند صادر کړي.
د CONNECT د منلو دمخه، HTTP تېروتنه کولی شي د رد سبب تشریح کړي. له منلو وروسته، په جریان کې د HTTP 500 لیکل به په تونل پروتوکول کې بایټونه داخل کړي. پرځای یې، په وروستیو ناکامیو کې مناسبې اړیکې پای ته ورسوئ یا ویجاړې کړئ.
دواړه لوري د د شات فشار څخه خبر د جریان اداره سره ونښلوئ، او پریکړه وکړئ چې end، error او close پېښې ملګري څنګه پای ته رسوي. لومړنی head بفر د همدې مالکیت ماډل برخه په توګه وساتئ؛ دا د اپلیکیشن معلومات دي، نه د غورځولو وړ اضافي HTTP سرلیکونه.