Cosa deve restituire una factory di socket SOCKS per Jedis
Jedis 5.2.0 si aspetta un socket connesso e pronto per Redis, incluso TLS quando serve; la sola scelta di un proxy non fornisce quella connessione.
JedisSocketFactory.createSocket deve restituire un socket connesso e pronto a trasportare il traffico Redis. In Jedis 5.2.0 l’applicazione fornisce quella factory e la propria configurazione del client Redis qui:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementa redis.clients.jedis.JedisSocketFactory, e redisConfig è il JedisClientConfig dell’applicazione. Siate pronti a connettervi quando il costruttore viene eseguito: può eseguire subito l’autenticazione e altre impostazioni Redis.
Seguire un socket dalla creazione alla consegna
Per una rotta SOCKS5 senza autenticazione, la factory può creare un java.net.Socket con un intermediario Proxy.Type.SOCKS esplicito, quindi connettersi all’host e alla porta Redis. Lasciate la destinazione non risolta se il server SOCKS deve risolvere il nome host.
Limitate il tentativo di connessione e applicate il timeout di lettura previsto. Se la connessione fallisce, chiudete quel socket e segnalate JedisConnectionException; l’interfaccia della factory non dichiara IOException verificata.
Se Redis richiede TLS, stabilite e verificate TLS prima di restituire il socket. Non si può presumere che un flag separato trasformi un socket arbitrario restituito dalla factory. Per un pool, ripetete questo ciclo di vita con un socket nuovo a ogni chiamata della factory, comprese le connessioni sostitutive.
Una selezione HTTP in un ProxySelector globale non è un’implementazione alternativa di questo lavoro. Redis invia RESP sul proprio socket; non diventa per questo HTTP né negozia CONNECT.