Node.js EPIPE nadat daar aan 'n SOCKS-proxy gekoppel is
Verduidelik Node se EPIPE ná verbinding met 'n SOCKS-eindpunt en kontroleer of die vereiste handdruk voltooi is.
Die Node-soket se connect-gebeurtenis sê vir jou dat TCP die proxy bereik het. Dit sê nie dat die proxy 'n verbinding na die bestemming oopgemaak het nie.
'n SOCKS5-bediener verwag metode-onderhandeling, enige gekose verifikasie en 'n bestemmingsversoek voordat toepassingsverkeer gestuur word. As jy dadelik 'n HTTP-versoek stuur, kan die bediener die verbinding sluit. 'n Latere skryf kan dan EPIPE lewer.
EPIPE alleen bewys nie dat die handdruk ontbreek nie. Dit rapporteer 'n skryf na 'n verbinding waarvan die eweknie nie meer daardie kommunikasie aanvaar nie. Lees die vroeëre gebeure en protokol-antwoorde om uit te vind waarom die eweknie gesluit het.
Gebruik 'n verbinder wat die volledige SOCKS-uitruiling implementeer. Vir Node se kern-HTTPS-kliënt kan 'n SOCKS-bewuste agent daardie onderhandeling voor die bestemming se TLS uitvoer. As jy die uitruiling self implementeer, versamel data volgens die protokol se veldlengtes. Een data-gebeurtenis is nie gewaarborg om een volledige antwoord te bevat nie, en die teruggekeerde gebonde adres hoef nie aan een hardgekodeerde greep bytes te voldoen nie.
Registreer fouthantering voordat die bewerking kan misluk, hou die verbindingstadium in die foutverslag, en stuur die bestemmingsprotokol slegs nadat die onderhandeling geslaag het. Om die fout te vang verhoed 'n onverwerkte gebeurtenis; dit herstel nie 'n ongeldige uitruiling nie.