Beth yw’n rhaid i ffatri soced SOCKS Jedis ei ddychwelyd
Mae Jedis 5.2.0 yn disgwyl soced cysylltiedig sy’n barod ar gyfer Redis, gan gynnwys TLS pan fo angen; nid yw dewis dirprwy ar ei ben ei hun yn darparu’r cysylltiad hwnnw.
JedisSocketFactory.createSocket yn gorfod dychwelyd soced cysylltiedig sy’n barod i gario traffig Redis. Yn Jedis 5.2.0 mae’r cymhwysiad yn cyflenwi’r ffatri honno a’i ffurfweddiad cleient Redis yma:
var jedis = new Jedis(socksSocketFactory, redisConfig);socksSocketFactory yn gweithredu redis.clients.jedis.JedisSocketFactory, a redisConfig yw JedisClientConfig y cymhwysiad. Byddwch yn barod i gysylltu pan fydd y constructor yn rhedeg: gall wneud dilysu a gosodiadau Redis eraill ar unwaith.
Dilynwch un soced o’i greu hyd at ei drosglwyddo
Ar gyfer llwybr SOCKS5 heb ddilysu, gall y ffatri greu java.net.Socket gyda chyfryngwr Proxy.Type.SOCKS penodol, ac yna cysylltu â gwesteiwr a phorth Redis. Cadwch y cyrchfan heb ei datrys os dylai’r gweinydd SOCKS ddatrys yr enw gwesteiwr.
Cyfyngwch yr ymgais i gysylltu a chymhwyso’r amser darllen a fwriadwyd. Os bydd’r cysylltiad yn methu, caewch y soced hwnnw a riportiwch JedisConnectionException; nid yw rhyngwyneb y ffatri yn datgan IOException gwiriadwy.
Os oes angen TLS ar Redis, sefydlwch a dilyswch TLS cyn dychwelyd y soced. Ni ellir tybio y bydd baner ar wahân yn trawsnewid soced mympwyol a ddychwelwyd gan y ffatri. Ar gyfer pwll, ailadroddwch y cylch bywyd hwn gyda soced newydd ar bob galwad ffatri, gan gynnwys cysylltiadau amnewid.
Nid yw dewis HTTP mewn ProxySelector byd-eang yn weithrediad amgen o’r gwaith hwn. Mae Redis yn anfon RESP dros ei soced; nid yw trwy hynny’n dod yn HTTP nac yn trafod CONNECT.