Qué debe devolver una fábrica de sockets SOCKS de Jedis
Jedis 5.2.0 espera un socket conectado y listo para Redis, incluido TLS cuando sea necesario; elegir un proxy por sí solo no aporta esa conexión.
JedisSocketFactory.createSocket debe devolver un socket conectado y listo para transportar tráfico de Redis. En Jedis 5.2.0, la aplicación proporciona esa fábrica y su configuración de cliente Redis aquí:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementa redis.clients.jedis.JedisSocketFactory, y redisConfig es el JedisClientConfig de la aplicación. Esté listo para conectar cuando se ejecute el constructor: puede realizar la autenticación y otros ajustes de Redis de inmediato.
Siga un socket desde su creación hasta su entrega
Para una ruta SOCKS5 sin autenticación, la fábrica puede crear un java.net.Socket con un intermediario Proxy.Type.SOCKS explícito y luego conectar con el host y el puerto de Redis. Deje el destino sin resolver si el servidor SOCKS debe resolver el nombre de host.
Limite el intento de conexión y aplique el tiempo de espera de lectura previsto. Si la conexión falla, cierre ese socket e informe de JedisConnectionException; la interfaz de la fábrica no declara IOException comprobada.
Si Redis requiere TLS, establezca y verifique TLS antes de devolver el socket. No cabe suponer que un indicador aparte transforme un socket arbitrario devuelto por la fábrica. Para un grupo, repita este ciclo de vida con un socket nuevo en cada llamada a la fábrica, incluidas las conexiones de reemplazo.
Una selección HTTP en un ProxySelector global no es una implementación alternativa de esta tarea. Redis envía RESP por su socket; no por ello se convierte en HTTP ni negocia CONNECT.