Abaphathi be-CONNECT be-Node.js kufanele bagcine i-head buffer
Phatha i-CONNECT socket ne-head buffer ye-Node emngceleni we-HTTP ukuya ku-tunnel, ugcine ama-byte asevele afundiwe ngale kwama-headers.
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.
| Impikiswano | Okuthwelayo |
|---|---|
req | Isicelo se-CONNECT, kuhlanganise negunya lendawo ekuyiwa kuyo nama-headers |
clientSocket | Ukuxhumana okubuyela kumklami |
head | Idatha 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.