Node HTTP مۇلازىمېتىرى ئادەتتىكى proxy تەلەپنى تەلەپ callback ئارقىلىق بىر تەرەپ قىلىدۇ. CONNECT باشقا يول ئالىدۇ: مۇلازىمېتىر تەلەپ، خېرىدار socket ۋە head buffer بىلەن بىرگە connect نى چىقىرىدۇ.

بۇ ۋەقە HTTP تەھلىلى بىلەن tunnel ئارىسىدىكى تاپشۇرۇش. Tunnel قىلىنغان ترافىك ئۈچۈن داۋاملىق ئىشلىتىلىدىغان ئادەتتىكى ServerResponse ئوبيېكتى يوق.

ئارگۇمېنتئۇ نېمىنى كۆتۈرىدۇ
reqCONNECT تەلەپ، ئۇنىڭ نىشان ھوقۇقى ۋە headers نى ئۆز ئىچىگە ئالىدۇ
clientSocketخېرىدارغا قايتىدىغان ئۇلىنىش
headNode HTTP headers دىن ئېشىپ ئوقۇغان tunnel سانلىق مەلۇماتى، بوش بولۇشى مۇمكىن

byte لارنى يەتكۈزۈشتىن بۇرۇن HTTP قارارىنى تاماملاڭ

تەلەپ قىلىنغان host ۋە port نى دەلىللەڭ، proxy نىڭ كىرىش ۋە دەلىللەش سىياسىتىنى قوللىنىڭ، ئۈستى ئېقىم ئۇلىنىشىنى قۇرۇڭ. CONNECT service.example:443 غا ئوخشاش ھوقۇقنى پەرقلىندۈرىدۇ; بۇ شەكىلنى ھەر ئىككى چېكىتتە كۆر-كۆرگەن بۆلۈشنىڭ ئورنىغا IPv6 ھوقۇقلىرىنى نەزەردە تۇتۇپ تەھلىل قىلىڭ.

Tunnel قوبۇل قىلىنغاندا، مۇۋەپپەقىيەتلىك HTTP ئىنكاسىنى ۋە ئۇنى ئاخىرلاشتۇرىدىغان بوش قۇرنى ئەۋەتىڭ. ئاندىن خېرىدار socket تىن كېلىدىغان كېيىنكى byte لار بىلەن داۋاملاشتۇرۇشتىن بۇرۇن ھەرقانداق head byte نى ئۈستىگە يەتكۈزۈڭ. يېڭى سانلىق مەلۇمات ئاڭلىغۇچىنى ئۇلاش بىلەن بىر تەرەپ قىلغۇچىغا ئايرىم تاپشۇرۇلغان buffer نى قايتۇرۇۋالغىلى بولمايدۇ.

Node نىڭ رەسمىي tunnel مىسالى ئىككى ئېقىم يۆنىلىشىنى ئۇلاشتىن بۇرۇن بۇ تاپشۇرۇشنى serverSocket.write(head) بىلەن ئېلىپ بارىدۇ. ئۇنىڭ كىچىك مىسالى ئۆتۈشنى كۆرسىتىدۇ; ئورۇنلاشتۇرۇلغان proxy يەنە چەكلىك ئۇلىنىش سىناقلىرى، كىرىش كونتروللىرى ۋە ھايات دەۋرى باشقۇرۇشنى تەلەپ قىلىدۇ.

مۇۋەپپەقىيەتتىن كېيىن، byte لار مۇلازىمەت پروتوكولىغا تەۋە

مۇۋەپپەقىيەتلىك CONNECT ئىنكاسى ئۇلىنىشنى byte ئېقىمىغا ئايلاندۇرىدۇ. نىشان HTTPS تور بېكىتى بولسا، ئۇنىڭ TLS ئالماشتۇرۇشى شۇ ئېقىم ئىچىدە بولىدۇ. پەقەت tunnel قىلىش proxy نىڭ ئورۇنباسار تور بېكەت گۇۋاھنامىسى چىقىرىشىنى تەلەپ قىلمايدۇ.

CONNECT نى قوبۇل قىلىشتىن بۇرۇن، HTTP خاتالىقى رەت قىلىش سەۋەبىنى چۈشەندۈرەلەيدۇ. قوبۇل قىلغاندىن كېيىن، ئېقىمغا HTTP 500 يېزىش tunnel پروتوكولىغا byte قىستۇرىدۇ. ئۇنىڭ ئورنىغا، كېيىنكى مەغلۇبىيەتلەردە مۇناسىپ ئۇلىنىشلارنى ئاخىرلاشتۇرۇڭ ياكى يوقىتىڭ.

ئىككى يۆنىلىشنى ئارقا بېسىمنى بىلىدىغان ئېقىم باشقۇرۇش بىلەن ئۇلاڭ، ھەمدە end، error ۋە close ۋەقەلىرىنىڭ ھەمراھنى قانداق ئاخىرلاشتۇرىدىغانلىقىنى بەلگىلەڭ. دەسلەپكى head buffer نى ئوخشاش ئىگىلىك مودېلىنىڭ بىر قىسمى سۈپىتىدە ساقلاڭ; ئۇ ئەپلىكەيشەن سانلىق مەلۇماتى، تاشلاشقا بولىدىغان ئارتۇق HTTP headers ئەمەس.

مۇناسىۋەتلىك ماقالىلەر