Node.js CONNECT באהאנדלער מוזן אָפּהיטן דעם head buffer
פֿאַרזאָרג דעם CONNECT סאָקעט און head buffer פֿון Node אויף דער גרענעץ פֿון HTTP צו טונעל, און היט אָפּ די בייטן וואָס זענען שוין געלייענט געוואָרן איבער די headers.
אַ Node HTTP סערווער באַהאַנדלט אַ געווענליכע proxy בקשה דורך זיין בקשה callback. CONNECT גייט אַן אַנדער וועג: דער סערווער עמיטירט connect צוזאַמען מיט דער בקשה, דעם קליענט סאָקעט און אַ head buffer.
יענער געשעעניש איז די איבערגעבונג צווישן HTTP פּאַרסינג און אַ טונעל. עס איז נישטאָ קיין געווענליכער ServerResponse אָביעקט וואָס מען זאָל ווייטער נוצן פֿאַר דעם טונעלירטן פֿאַרקער.
| אַרגומענט | וואָס ער טראָגט |
|---|---|
req | די CONNECT בקשה, אַרייַנגערעכנט איר ציל אויטאָריטעט און headers |
clientSocket | די פֿאַרבינדונג צוריק צום קליענט |
head | טונעל דאַטן וואָס Node האָט שוין געלייענט איבער די HTTP headers, מעגלעך ליידיק |
פֿאַרענדיק די HTTP באַשלוס איידער איר פֿאַרן־ווייטער בייטן
וואַלידירט דעם געבעטן host און port, ניצט די צוטריט־און אויטענטיפֿיקאַציע פּאָליטיק פֿון דעם proxy, און שטעלט אויף די אויבערדיקע פֿאַרבינדונג. CONNECT אידענטיפֿיצירט אַן אויטאָריטעט ווי service.example:443; פּאַרסירט יענעם פֿאָרעם מיט IPv6 אויטאָריטעטן אין זינען אַנשטאָט בלינד צעטיילן ביי יעדן צווייפּונקט.
ווען דער טונעל ווערט אָנגענומען, שיקט די דערפֿאָלגרייכע HTTP ענטפֿער און דערנאָך איר פֿאַרשלאָסענע ליידיקע שורה. דערנאָך פֿאַרן־ווייטער סיי וועלכע head בייטן אויסערווייניק איידער איר פֿאָרט ווייטער מיט שפּעטערדיקע בייטן פֿון דעם קליענט סאָקעט. צעלאָזן אַ נײַעם דאַטן־צוהערער קען נישט צוריקבאַקומען אַ buffer וואָס איז שוין באַזונדער איבערגעגעבן געוואָרן צום באַהאַנדלער.
דער אָפֿיציעלער טונעלירן־ביישפּיל פֿון Node פֿירט דורוך יענע איבערגעבונג מיט serverSocket.write(head) איידער ער פֿאַרבינדט די צוויי שטראָם־ריכטונגען. זיין קליין ביישפּיל אילוסטרירט דעם איבערגאַנג; אַן אויסגעשטעלטער proxy דאַרף אויך באַגרענעצטע פֿאַרבינדונג־פּרובירן, צוטריט־קאָנטראָלן און לעבנס־ציקל פֿאַרוואַלטונג.
נאָך דערפֿאָלג געהערן די בייטן צום דינסט־פּראָטאָקאָל
אַ דערפֿאָלגרייכע CONNECT ענטפֿער פֿאַרוואַנדלט די פֿאַרבינדונג אין אַ בייטן־שטראָם. אויב דאָס ציל איז אַ HTTPS וועבזייטל, פֿאָרט זיין TLS אויסטויש אין יענעם שטראָם. בלויז טונעלירן פֿאָדערט נישט אַז דער proxy זאָל אַרויסגעבן אַ פֿאַרבײַטנדיק וועבזייטל־צערטיפֿיקאַט.
פֿאַר אַקדאָם פֿון CONNECT קען אַ HTTP פֿעלער דערקלערן פֿאַרוואָס עס איז אָפּגעוואָרפֿן געוואָרן. נאָך דער אָננאָמע וואָלט שרײַבן אַ HTTP 500 אין שטראָם אַרײַנגעשטעלט בייטן אין דעם טונעלירטן פּראָטאָקאָל. ענדיקט אָדער פֿאַרטיליקט אַנשטאָט די פּאַסיקע פֿאַרבינדונגען ביי שפּעטערדיקע דורכפֿאַלן.
פֿאַרבינד ביידע ריכטונגען מיט שטראָם־באַהאַנדלונג מיט קעגנדרוק־באַוווּסטזיין, און באַשטימט ווי end, error און close געשעענישן ענדיקן דעם פּאָר. היט אָפּ דעם אָנהײבלעכן head buffer ווי אַ טייל פֿון דעם זעלביקן אייגנטום־מאָדעל; עס זענען אַפּליקאַציע־דאַטן, נישט איבעריקע HTTP headers צו וואַרפֿן.