Nodeov connect događaj na socketu govori vam da je TCP stigao do proxyja. Ne govori da je proxy otvorio vezu prema odredištu.

SOCKS5 poslužitelj očekuje pregovor o metodi, eventualnu odabranu autentifikaciju i zahtjev za odredištem prije prometa aplikacije. Ako odmah pošaljete HTTP zahtjev, poslužitelj može zatvoriti vezu. Kasnije pisanje tada može proizvesti EPIPE.

EPIPE sam po sebi ne dokazuje da handshake nedostaje. Prijavljuje pisanje u vezu čija druga strana više ne prihvaća tu komunikaciju. Pročitajte ranije događaje i odgovore protokola kako biste saznali zašto je druga strana zatvorila vezu.

Koristite konektor koji implementira potpunu SOCKS razmjenu. Za Nodeov osnovni HTTPS klijent, agent koji razumije SOCKS može obaviti taj pregovor prije TLS-a odredišta. Ako sami implementirate razmjenu, akumulirajte podatke prema duljinama polja protokola. Nije zajamčeno da jedan data događaj sadrži jedan potpuni odgovor, a vraćena vezana adresa ne mora odgovarati jednom tvrdo kodiranom nizu bajtova.

Registrirajte rukovanje pogreškama prije nego što operacija može pasti, zadržite fazu veze u izvješću o pogrešci i pošaljite protokol odredišta tek nakon uspješnog pregovora. Hvatanje pogreške sprječava neobrađeni događaj; ono ne popravlja nevaljanu razmjenu.

Povezani članci