EPIPE de Node.js tras conectar cun proxy SOCKS
Interprete o EPIPE de Node tras conectar cun punto SOCKS e comprobe se se completou o handshake necesario.
O evento connect do socket de Node indícalle que TCP chegou ao proxy. Non indica que o proxy abrise unha conexión co destino.
Un servidor SOCKS5 espera unha negociación de método, calquera autenticación seleccionada e unha solicitude de destino antes do tráfico da aplicación. Enviar unha solicitude HTTP de inmediato pode facer que o servidor peche a conexión. Unha escritura posterior pode entón producir EPIPE.
EPIPE por si só non demostra que falte o handshake. Informa dunha escritura nunha conexión cuxo par xa non acepta esa comunicación. Lea os eventos e as respostas de protocolo anteriores para descubrir por que pechou o par.
Use un conector que implemente o intercambio SOCKS completo. Para o cliente HTTPS principal de Node, un axente compatible con SOCKS pode realizar esa negociación antes do TLS do destino. Se implementa o intercambio vostede mesmo, acumule datos segundo as lonxitudes de campo do protocolo. Non se garante que un evento data conteña unha resposta completa, e o enderezo vinculado devolto non ten que coincidir cunha cadea de bytes codificada de forma fixa.
Rexiste o tratamento de erros antes de que a operación poida fallar, conserve a etapa da conexión no informe de erro e envía o protocolo de destino só despois de que a negociación teña éxito. Capturar o erro evita un evento non xestionado; non repara un intercambio non válido.