Node.js EPIPE efter anslutning till en SOCKS-proxy
Tolka Nodes EPIPE efter anslutning till en SOCKS-slutpunkt och kontrollera om den nödvändiga handskakningen slutfördes.
connect-händelsen i Node-socketen säger att TCP nådde proxyn. Den säger inte att proxyn har öppnat en anslutning till målet.
En SOCKS5-server förväntar sig metodförhandling, eventuell vald autentisering och en destinationsbegäran före applikationstrafiken. Om du skickar en HTTP-begäran direkt kan servern stänga anslutningen. En senare skrivning kan då ge EPIPE.
EPIPE ensamt bevisar inte en saknad handskakning. Det rapporterar en skrivning till en anslutning vars motpart inte längre accepterar den kommunikationen. Läs de tidigare händelserna och protokollsvaren för att ta reda på varför motparten stängde.
Använd en connector som implementerar hela SOCKS-utbytet. För Nodes kärn-HTTPS-klient kan en SOCKS-medveten agent utföra den förhandlingen före målets TLS. Om du implementerar utbytet själv måste du samla data enligt protokollets fältlängder. Det är inte garanterat att en data-händelse innehåller ett fullständigt svar, och den returnerade bundna adressen behöver inte matcha en hårdkodad byte-sträng.
Registrera felhantering innan åtgärden kan misslyckas, behåll anslutningssteget i felrapporten och skicka destinationsprotokollet först efter att förhandlingen lyckats. Att fånga felet förhindrar en ohanterad händelse; det reparerar inte ett ogiltigt utbyte.