Iseva ye-HTTP ye-Node iphatha isicelo se-proxy esijwayelekile nge-callback yesicelo. I-CONNECT ithatha enye indlela: iseva ikhipha i-connect kanye nesicelo, i-client socket kanye ne-head buffer.

Leso sehlakalo ukudluliselwa phakathi kokuhlaziywa kwe-HTTP ne-tunnel. Asikho into ejwayelekile ye-ServerResponse okufanele iqhubeke isetshenziselwa ithrafikhi ye-tunnel.

ImpikiswanoOkuthwelayo
reqIsicelo se-CONNECT, kuhlanganise negunya lendawo ekuyiwa kuyo nama-headers
clientSocketUkuxhumana okubuyela kumklami
headIdatha ye-tunnel isevele iyifundile i-Node ngale kwama-headers e-HTTP, kungenzeka ingenalutho

Qedela isinqumo se-HTTP ngaphambi kokudlulisa ama-byte

Qinisekisa i-host ne-port eceliwe, sebenzisa inqubomgomo yokufinyelela nokuqinisekisa ye-proxy, futhi usungule ukuxhumana okuphezulu. I-CONNECT ikhomba igunya elifana ne-service.example:443; hlaziya lelo fomu ngokucabangela amagunya e-IPv6 esikhundleni sokwehlukanisa ngobumpumputhe kuwo wonke amaphuzu amabili.

Lapho i-tunnel yamukelwa, thumela impendulo ye-HTTP ephumelelayo ilandelwa umugqa ongenalutho oyiphetha. Bese udlulisela noma yimaphi ama-byte e-head phezulu ngaphambi kokuqhubeka nama-byte alandelayo avela ku-client socket. Ukunamathisela isilaleli sedatha esisha akukwazi ukubuyisa i-buffer esivele yanikezwa i-handler ngokwehlukana.

Isibonelo esisemthethweni se-tunnel se-Node senza lokho kudluliselwa nge-serverSocket.write(head) ngaphambi kokuxhuma izinjongo ezimbili zomfudlana. Isibonelo saso esincane sibonisa ukushintsha; i-proxy esetshenzisiwe idinga futhi imizamo yokuxhumana enomkhawulo, izilawuli zokufinyelela kanye nokuphathwa komjikelezo wokuphila.

Ngemva kokuphumelela, ama-byte angawephrothokholi yensizakalo

Impendulo ye-CONNECT ephumelelayo iguqula ukuxhumana kube umfudlana wama-byte. Uma okuhlosiwe kuyisayithi ye-HTTPS, ukushintshana kwayo kwe-TLS kuhamba ngaphakathi kwalowo mfudlana. Ukwenza i-tunnel kuphela akudingi ukuthi i-proxy ikhiphe isitifiketi sesayithi esikhundleni.

Ngaphambi kokwamukela i-CONNECT, iphutha le-HTTP lingachaza isizathu sokwenqatshwa. Ngemva kokwamukela, ukubhala i-HTTP 500 emfudlaneni kuzofaka ama-byte kuphrothokholi ye-tunnel. Esikhundleni salokho, qeda noma chitha ukuxhumana okufanele ekuhlulekeni kwakamuva.

Xhuma izinhlangothi zombili nge-ukuphathwa komfudlana okwaziyo ngengcindezi yasemuva, futhi unqume ukuthi izehlakalo ze-end, error ne-close ziqeda kanjani umlingani. Gcina i-head buffer yokuqala njengengxenye yemodeli yobunikazi efanayo; iyidatha yohlelo lokusebenza, hhayi ama-headers e-HTTP engeziwe okufanele alahlwe.

Izihloko ezihlobene