Node HTTP zerbitzari batek proxy eskaera arrunt bat kudeatzen du eskaeraren callbackaren bidez. CONNECTek beste bide bat hartzen du: zerbitzariak connect igortzen du eskaerarekin, bezeroaren socketarekin eta head bufferrarekin.

Gertaera hori HTTP analisiaren eta tunel baten arteko entregatzea da. Ez dago ServerResponse objektu arruntik tunelaren trafikoan erabiltzen jarraitzeko.

ArgumentuaZer darama
reqCONNECT eskaera, bere helmugako autoritatea eta goiburuak barne
clientSocketBezeroarengana itzultzeko konexioa
headNode-k HTTP goiburuetatik haratago jada irakurri dituen tunel datuak, agian hutsik

Amaitu HTTP erabakia byteak birbidali aurretik

Balioztatu eskatutako ostalaria eta portua, aplikatu proxyaren sarbide eta autentifikazio politika, eta ezarri gorako konexioa. CONNECTek service.example:443 bezalako autoritate bat identifikatzen du; analizatu forma hori IPv6 autoritateak kontuan hartuta, bi puntu bakoitzean itsu-itsuan zatitu beharrean.

Tunela onartzen denean, bidali HTTP erantzun arrakastatsua eta hari amaitzen duen lerro hutsa. Gero, bidali head byteak gorantz, bezeroaren socketetik datozen hurrengo byteekin jarraitu aurretik. Datu-entzule berri bat erantsiz ezin da berreskuratu kudeatzaileari bereiz entregatu zaion buffer bat.

Node-ren tunel adibide ofizialak entregatze hori serverSocket.write(head) erabiliz egiten du bi fluxu norabideak konektatu aurretik. Bere adibide txikiak trantsizioa erakusten du; zabaldutako proxy batek konexio-saiakera mugatuak, sarbide-kontrolak eta bizi-ziklo kudeaketa ere behar ditu.

Arrakastaren ondoren, byteak zerbitzuaren protokoloarenak dira

CONNECT erantzun arrakastatsu batek konexioa byte-fluxu bihurtzen du. Helburua HTTPS gunea bada, bere TLS trukea fluxu horren barruan bidaiatzen du. Soilik tunelatzeak ez du eskatzen proxyak ordezko webgune ziurtagiria jaulkitzea.

CONNECT onartu aurretik, HTTP errore batek zergatik ukatu zen azal dezake. Onartu ondoren, HTTP 500 bat fluxuan idazteak byteak injektatuko lituzke tunel protokoloan. Horren ordez, amaitu edo suntsitu konexio egokiak geroagoko hutsegiteetan.

Konektatu bi norabideak kontra-presioaz jabetzen den fluxu kudeaketa erabiliz, eta erabaki nola end, error eta close gertaerek kidea amaitzen duten. Gorde hasierako head bufferra jabetza-eredu beraren parte gisa; aplikazioaren datuak dira, ez baztertzeko soberako HTTP goiburuak.

Erlazionatutako artikuluak