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.

Artigos relacionados