Seva ya HTTP ya Node hushughulikia ombi la kawaida la proksi kupitia callback ya ombi. CONNECT huchukua njia nyingine: seva hutoa connect pamoja na ombi, socket ya mteja na head buffer.

Tukio hilo ni makabidhiano kati ya uchanganuzi wa HTTP na handaki. Hakuna kitu cha kawaida cha ServerResponse cha kuendelea kutumia kwa trafiki ya handaki.

HojaKinachobeba
reqOmbi la CONNECT, ikiwa ni pamoja na mamlaka ya lengo na vichwa
clientSocketMuunganisho wa kurudi kwa mteja
headData ya handaki ambayo Node imeshasoma zaidi ya vichwa vya HTTP, huenda ikiwa tupu

Kamilisha uamuzi wa HTTP kabla ya kupeleka baiti

Thibitisha mwenyeji na bandari iliyoombwa, tumia sera ya ufikiaji na uthibitishaji ya proksi, na uanzishe muunganisho wa juu. CONNECT hutambua mamlaka kama service.example:443; chambua umbo hilo ukizingatia mamlaka za IPv6 badala ya kugawanya kipofu kwenye kila nukta mbili.

Handaki inapokubaliwa, tuma jibu la HTTP lililofanikiwa likifuatiwa na mstari tupu wa kuhitimisha. Kisha peleka baiti zozote za head juu kabla ya kuendelea na baiti za baadaye kutoka socket ya mteja. Kuambatisha kiska cha data kipya hakuwezi kurejesha buffer ambayo tayari imekabidhiwa kwa kishika kando.

Mfano rasmi wa handaki wa Node hufanya makabidhiano hayo kwa serverSocket.write(head) kabla ya kuunganisha mielekeo miwili ya mtiririko. Mfano wake mdogo unaonyesha mpito; proksi iliyowekwa inahitaji pia majaribio yenye mipaka ya muunganisho, udhibiti wa ufikiaji na usimamizi wa mzunguko wa maisha.

Baada ya mafanikio, baiti ni za itifaki ya huduma

Jibu la CONNECT lililofanikiwa hubadilisha muunganisho kuwa mtiririko wa baiti. Ikiwa lengo ni tovuti ya HTTPS, mabadilishano yake ya TLS husafiri ndani ya mtiririko huo. Kuweka handaki tu hakuhitaji proksi kutoa cheti mbadala cha tovuti.

Kabla ya kukubali CONNECT, kosa la HTTP linaweza kueleza kwa nini lilikataliwa. Baada ya kukubaliwa, kuandika HTTP 500 kwenye mtiririko kutaingiza baiti kwenye itifaki ya handaki. Badala yake, maliza au haribu muunganisho unaofaa katika hitilafu za baadaye.

Unganisha mielekeo yote miwili kwa ushughulikiaji wa mtiririko unaozingatia shinikizo la nyuma, na uamue jinsi matukio ya end, error na close yanavyomaliza mwenzake. Hifadhi head buffer ya awali kama sehemu ya modeli hiyo hiyo ya umiliki; ni data ya programu, si vichwa vya HTTP vya ziada vya kutupwa.

Makala zinazohusiana