Què ha de retornar una fàbrica de sockets SOCKS de Jedis
Jedis 5.2.0 espera un socket connectat i a punt per a Redis, incloent-hi TLS quan cal; només triar un proxy no proporciona aquesta connexió.
JedisSocketFactory.createSocket ha de retornar un socket connectat a punt per transportar trànsit de Redis. A Jedis 5.2.0, l’aplicació forneix aquesta fàbrica i la seva configuració de client Redis aquí:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementa redis.clients.jedis.JedisSocketFactory, i redisConfig és el JedisClientConfig de l’aplicació. Estigueu a punt per connectar quan s’executi el constructor: pot fer l’autenticació i altres ajustos de Redis immediatament.
Seguiu un socket des de la creació fins al lliurament
Per a una ruta SOCKS5 sense autenticació, la fàbrica pot crear un java.net.Socket amb un intermediari explícit Proxy.Type.SOCKS i després connectar-se a l’amfitrió i el port de Redis. Deixeu la destinació sense resoldre si el servidor SOCKS ha de resoldre el nom d’amfitrió.
Limiteu l’intent de connexió i apliqueu el temps d’espera de lectura previst. Si la connexió falla, tanqueu aquest socket i informeu de JedisConnectionException; la interfície de la fàbrica no declara IOException comprovat.
Si Redis requereix TLS, establiu i verifiqueu TLS abans de retornar el socket. No es pot suposar que una bandera separada transformi un socket arbitrari retornat per la fàbrica. Per a un pool, repetiu aquest cicle de vida amb un socket nou a cada crida de la fàbrica, incloent-hi les connexions de substitució.
Una selecció HTTP en un ProxySelector global no és una implementació alternativa d’aquesta feina. Redis envia RESP pel seu socket; no es converteix per això en HTTP ni negocia CONNECT.