Spring WebClient နှင့် Jetty: CONNECT မပါဘဲ သာမန် HTTP ပရောက်စီ
သာမန် ပို့ဆောင်ထားသော HTTP တောင်းဆိုမှု လိုအပ်သည့်အခါ ကိုက်ညီသော HTTP/1.1 ကလိုင်းနှင့် ပရောက်စီ ပရိုတိုကောများဖြင့် Spring ၏ Jetty ချိတ်ဆက်ကိရိယာကို အသုံးပြုပါ။
Reactor Netty ၏ HTTP ပရောက်စီ ကိုင်တွယ်သူသည် သာမန် HTTP ပစ်မှတ်အတွက်ပင် CONNECT ဥမင်လိုဏ်ခေါင်းကို တည်ဆောက်သည်။ ရည်ရွယ်ထားသော ပရောက်စီက သာမန် HTTP/1.1 ပို့ဆောင်မှုကို လက်ခံပါက Spring WebClient သည် အခြား ပံ့ပိုးထားသော ချိတ်ဆက်ကိရိယာကို အသုံးပြုနိုင်သည်။
Spring 6.2 နှင့် Jetty 12.0.35 ၏ ကလိုင်း API နှင့် ကိုက်ညီသော Jetty Reactive Streams ပေါင်းစပ်မှုအတွက်:
var jetty = new org.eclipse.jetty.client.HttpClient(
new org.eclipse.jetty.client.transport.HttpClientTransportOverHTTP());
jetty.getProxyConfiguration().addProxy(
new org.eclipse.jetty.client.HttpProxy("proxy.example", 8080));
var client = WebClient.builder()
.clientConnector(new JettyClientHttpConnector(jetty))
.build();WebClient နှင့် JettyClientHttpConnector သည် Spring အတန်းများ ဖြစ်သည်။ ပေးထားသော Jetty ကလိုင်း၏ စတင်ခြင်းနှင့် ရပ်တန့်ခြင်းကို အပလီကေးရှင်း၏ ပုံမှန် သက်တမ်းစက်ဝန်းဖြင့် စီမံပါ။
ပစ်မှတ်နှင့် ကလိုင်း-ပရောက်စီ ပရိုတိုကောများ ကိုက်ညီပါက Jetty ၏ HTTP/1.1 ပရောက်စီသည် ဥမင်မပါဘဲ သာမန် HTTP/1.1 တောင်းဆိုမှုကို ပို့ဆောင်နိုင်သည်။ ၎င်း၏ requiresTunnel မူဝါဒသည် လုံခြုံသော ပစ်မှတ်များနှင့် မကိုက်ညီသော ပရိုတိုကော လမ်းကြောင်းများအတွက် CONNECT ကို အသုံးပြုသည်။
ဤသည် သာမန် HTTPS ဥမင်မှ CONNECT ကို ဖယ်ရှားရန် နည်းလမ်း မဟုတ်ပါ။ ပစ်မှတ်၏ scheme ကို မှန်ကန်စွာ ထားပါ။
ဖော်ပြထားသော Jetty API တွင် addProxy ကို အသုံးပြုပါ။ getProxies သည် ပြင်ဆင်၍မရသော စာရင်းကို ပြန်ပေးသည်၊ ထို့ကြောင့် ယခင် getProxies().add(...) နည်းလမ်းသည် ၎င်း၏ လက်ရှိ ပြင်ဆင်မှု အင်တာဖေ့စ် မဟုတ်ပါ။
ခွင့်ပြုထားသော အများသူငှာ ပရောက်စီ လမ်းကြောင်းရှိ အများသူငှာ HTTP ပစ်မှတ်များအတွက် HTTP ပရောက်စီ စာရင်း သည် Jetty ပရောက်စီ၏ host နှင့် port အတွက် ကိုယ်စားလှယ်လောင်းများကို ပံ့ပိုးသည်။ ချိတ်ဆက်ကိရိယာများကို နှိုင်းယှဉ်သည့်အခါ အမှန်တကယ် ပရောက်စီ တုံ့ပြန်မှုကို ဖတ်ပါ။ စစ်မှန်ကြောင်း အတည်ပြုခြင်း၊ ပစ်မှတ် မူဝါဒနှင့် မရရှိနိုင်သော ပစ်မှတ်တို့သည် ပို့ဆောင်ထားသော HTTP သို့မဟုတ် CONNECT ကို ရွေးချယ်ခြင်းနှင့် သီးခြား ရှိနေသည်။