Node-ի socket-ի connect իրադարձությունը ձեզ ասում է, որ TCP-ն հասել է պրոքսիին։ Այն չի ասում, որ պրոքսին կապ է բացել դեպի նպատակակետը։

SOCKS5 սերվերը հավելվածի թրաֆիկից առաջ սպասում է մեթոդի բանակցության, ընտրված նույնականացման և նպատակակետի հարցման։ HTTP հարցումն անմիջապես ուղարկելը կարող է ստիպել սերվերին փակել կապը։ Հետագա գրառումը այդ դեպքում կարող է առաջացնել EPIPE։

Միայն EPIPE-ն չի ապացուցում handshake-ի բացակայությունը։ Այն հաղորդում է գրառման մասին կապի մեջ, որի զուգընկերն այլևս չի ընդունում այդ հաղորդակցությունը։ Կարդացեք նախորդ իրադարձությունները և արձանագրության պատասխանները՝ պարզելու, թե ինչու զուգընկերը փակեց կապը։

Օգտագործեք միակցիչ, որն իրականացնում է SOCKS-ի ամբողջական փոխանակումը։ Node-ի հիմնական HTTPS հաճախորդի համար SOCKS-ին ծանոթ գործակալը կարող է այդ բանակցությունն անցկացնել նպատակակետի TLS-ից առաջ։ Եթե փոխանակումն ինքներդ եք իրականացնում, տվյալները կուտակեք ըստ արձանագրության դաշտերի երկարությունների։ Երաշխավորված չէ, որ մեկ data իրադարձություն պարունակում է մեկ ամբողջական պատասխան, և վերադարձված կապված հասցեն պարտադիր չէ, որ համընկնի մեկ կոշտ կոդավորված բայթաշարքի հետ։

Գրանցեք սխալների մշակումը նախքան գործողության ձախողումը, պահեք կապի փուլը սխալի հաշվետվության մեջ և նպատակակետի արձանագրությունն ուղարկեք միայն բանակցության հաջողությունից հետո։ Սխալի որսումը կանխում է չմշակված իրադարձությունը, բայց չի վերականգնում անվավեր փոխանակումը։

Առնչվող հոդվածներ