Událost connect socketu v Node říká, že TCP dosáhlo proxy. Neříká, že proxy otevřelo spojení k cíli.

Server SOCKS5 očekává před provozem aplikace vyjednání metody, případnou zvolenou autentizaci a požadavek na cíl. Pokud odešlete požadavek HTTP okamžitě, server může spojení uzavřít. Pozdější zápis pak může vyvolat EPIPE.

Samotné EPIPE nedokazuje chybějící handshake. Oznamuje zápis do spojení, jehož protistrana už tuto komunikaci nepřijímá. Přečtěte si dřívější události a odpovědi protokolu a zjistěte, proč protistrana spojení uzavřela.

Použijte konektor, který implementuje úplnou výměnu SOCKS. Pro základního klienta HTTPS v Node může agent rozumějící SOCKS provést toto vyjednání před TLS k cíli. Pokud výměnu implementujete sami, shromažďujte data podle délek polí protokolu. Není zaručeno, že jedna událost data obsahuje jednu úplnou odpověď, a vrácená vázaná adresa nemusí odpovídat jednomu pevně zapsanému bajtovému řetězci.

Zaregistrujte ošetření chyb dříve, než operace může selhat, zachovejte fázi spojení ve zprávě o chybě a protokol cíle odešlete až po úspěšném vyjednání. Zachycení chyby zabrání neošetřené události; neopraví však neplatnou výměnu.

Související články