Ինչ պետք է վերադարձնի Jedis-ի SOCKS սոկետ ֆաբրիկան
Jedis 5.2.0-ը սպասում է միացված, Redis-ի համար պատրաստ սոկետի, անհրաժեշտության դեպքում՝ TLS-ով; միայն պրոքսի ընտրությունը այդ միացումը չի ապահովում։
JedisSocketFactory.createSocket պետք է վերադարձնի միացված սոկետ, որը պատրաստ է կրելու Redis-ի տրաֆիկը։ Jedis 5.2.0-ում հավելվածը տրամադրում է այդ ֆաբրիկան և իր Redis հաճախորդի կոնֆիգուրացիան այստեղ՝
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory իրականացնում է redis.clients.jedis.JedisSocketFactory-ը, իսկ redisConfig-ը հավելվածի JedisClientConfig-ն է։ Եղեք պատրաստ միանալու, երբ կոնստրուկտորը սկսի աշխատել. այն կարող է անմիջապես կատարել նույնականացում և այլ Redis կարգավորումներ։
Հետևեք մեկ սոկետի՝ ստեղծումից մինչև հանձնում
Չնույնականացված SOCKS5 երթուղու համար ֆաբրիկան կարող է ստեղծել java.net.Socket՝ բացահայտ Proxy.Type.SOCKS միջնորդով, ապա միանալ Redis-ի հոսթին և պորտին։ Թողեք նպատակակետը չլուծված եթե SOCKS սերվերը պետք է լուծի հոսթի անունը։
Սահմանափակեք միացման փորձը և կիրառեք նախատեսված ընթերցման ժամկետը։ Եթե միացումը ձախողվի, փակեք այդ սոկետը և հաղորդեք JedisConnectionException-ի մասին. ֆաբրիկայի ինտերֆեյսը չի հայտարարում ստուգված IOException։
Եթե Redis-ը պահանջում է TLS, սոկետը վերադարձնելուց առաջ հաստատեք և ստուգեք TLS-ը։ Չի կարելի ենթադրել, որ առանձին դրոշակը կվերափոխի ֆաբրիկայի վերադարձրած ցանկացած սոկետ։ Լողավազանի համար կրկնեք այս կենսացիկլը նոր սոկետով յուրաքանչյուր ֆաբրիկայի կանչի ժամանակ, ներառյալ փոխարինող միացումները։
Գլոբալ ProxySelector-ում HTTP-ի ընտրությունը այս աշխատանքի այլընտրանքային իրականացում չէ։ Redis-ը RESP է ուղարկում իր սոկետով. դրանով այն HTTP չի դառնում և CONNECT չի բանակցում։