Co musí továrna SOCKS socketů pro Jedis vracet
Jedis 5.2.0 očekává připojený socket připravený pro Redis, včetně TLS, je-li potřeba; samotná volba proxy toto spojení nezajistí.
JedisSocketFactory.createSocket musí vrátit připojený socket připravený přenášet provoz Redis. V Jedis 5.2.0 aplikace předává tuto továrnu a svou konfiguraci klienta Redis zde:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory implementuje redis.clients.jedis.JedisSocketFactory a redisConfig je JedisClientConfig aplikace. Buďte připraveni na spojení už při spuštění konstruktoru: může okamžitě provést autentizaci a další nastavení Redis.
Sledujte jeden socket od vytvoření po předání
Pro neautentizovanou trasu SOCKS5 může továrna vytvořit java.net.Socket s explicitním prostředníkem Proxy.Type.SOCKS a poté se připojit k hostiteli a portu Redis. Nechte cíl nevyřešený pokud má název hostitele přeložit server SOCKS.
Omezte pokus o připojení a použijte zamýšlený časový limit čtení. Pokud se spojení nezdaří, zavřete tento socket a nahlaste JedisConnectionException; rozhraní továrny nedeklaruje kontrolovanou IOException.
Pokud Redis vyžaduje TLS, navazte a ověřte TLS před předáním socketu. Nelze předpokládat, že samostatný příznak přemění libovolný socket vrácený továrnou. U poolu tento životní cyklus opakujte s novým socketem při každém volání továrny, včetně náhradních spojení.
Volba HTTP v globálním ProxySelector není alternativní implementací této práce. Redis posílá RESP přes svůj socket; tím se nestává HTTP ani nevyjednává CONNECT.