ଏକ SOCKS ଟନେଲ ଏକ TCP ସଂଯୋଗ ବହନ କରେ। Go ସେହି ଟନେଲ ମାଧ୍ୟମରେ ଗନ୍ତବ୍ୟ ସହିତ TLS କରିପାରେ ଏବଂ ସେଠାରେ HTTP/2 ବୁଝାମଣା କରିପାରେ; SOCKS ସର୍ଭର ନିଜେ HTTP/2 କହିବା ଆବଶ୍ୟକ ନାହିଁ।

Go ର ମାନକ ଡିଫଲ୍ଟ ଟ୍ରାନ୍ସପୋର୍ଟ ରଖୁଥିବା ପ୍ରୋଗ୍ରାମରେ, ଏହାର କନଫିଗରେସନ୍ କ୍ଲୋନ୍ କରନ୍ତୁ ଏବଂ ପ୍ରକ୍ସି ବାଛନ୍ତୁ:

import (
    "net/http"
    "net/url"
    "time"
)

proxyURL := &url.URL{
    Scheme: "socks5",
    Host: "proxy.example:1080",
}
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
client := &http.Client{
    Transport: transport,
    Timeout: 30 * time.Second,
}

ପ୍ରକ୍ସି ଏବଂ ଗନ୍ତବ୍ୟ ଭିନ୍ନ ମୂଲ୍ୟ ହୋଇ ରହେ। ପ୍ରକ୍ସି ମୂଲ୍ୟ ପାଇଁ SOCKS5 ପ୍ରକ୍ସି ତାଲିକାରୁ ଏକ SOCKS5 ଏଣ୍ଡପଏଣ୍ଟ ବାଛନ୍ତୁ; HTTP/2 ଏବେ ମଧ୍ୟ ଗନ୍ତବ୍ୟ ସହିତ ବୁଝାମଣା ହୁଏ। client ବ୍ୟବହାର କରି ପ୍ରକୃତ HTTPS ସେବା URL ଅନୁରୋଧ କରନ୍ତୁ, ତାପରେ ଆପଣଙ୍କ ଆପ୍ଲିକେସନର ସାଧାରଣ ଜୀବନଚକ୍ର ମାଧ୍ୟମରେ ପ୍ରତିକ୍ରିୟା ବଡି ବନ୍ଦ କରନ୍ତୁ।

ମାନକ ଡିଫଲ୍ଟ ଟ୍ରାନ୍ସପୋର୍ଟ HTTP/2 କୁ ସମର୍ଥନ କରେ। ଏହାକୁ କ୍ଲୋନ୍ କଲେ ସେହି କନଫିଗରେସନ୍ ରହେ ଏବଂ ପ୍ରକ୍ସି ଚୟନ ବଦଳାଯାଇପାରେ। ପ୍ରକାର ଯାଞ୍ଚ ଅନୁମାନ କରେ ଯେ ପ୍ରୋଗ୍ରାମ http.DefaultTransport କୁ ଅନ୍ୟ RoundTripper ସହିତ ବଦଳାଇ ନାହିଁ।

ପୃଥକ ଭାବରେ ନିର୍ମିତ ଟ୍ରାନ୍ସପୋର୍ଟ ପାଇଁ, ଏହାର HTTP/2 କନଫିଗରେସନ୍ ସମୀକ୍ଷା କରନ୍ତୁ, ବିଶେଷକରି କଷ୍ଟମ୍ dial କିମ୍ବା TLS ହୁକ୍ ଯୋଗାଇବା ସମୟରେ। Go ForceAttemptHTTP2 ଏବଂ ନୂତନ ସଂସ୍କରଣରେ ସେହି ଚୟନ ପାଇଁ ସ୍ପଷ୍ଟ Protocols କନଫିଗରେସନ୍ ପ୍ରଦାନ କରେ।

ଗନ୍ତବ୍ୟ ଏବେ ମଧ୍ୟ TLS ବୁଝାମଣା ମାଧ୍ୟମରେ HTTP/2 ପ୍ରଦାନ କରିବାକୁ ପଡ଼ିବ। କଣ ବ୍ୟବହୃତ ହେଲା ଦେଖିବା ପାଇଁ ସଫଳ ପ୍ରତିକ୍ରିୟାର Proto କିମ୍ବା ProtoMajor ମୂଲ୍ୟ ଯାଞ୍ଚ କରନ୍ତୁ। SOCKS ମାଧ୍ୟମରେ ସଫଳ HTTPS ଅନୁରୋଧ ନିଜେ ପ୍ରମାଣ କରେ ନାହିଁ ଯେ ବୁଝାମଣା ହୋଇଥିବା ପ୍ରୋଟୋକଲ୍ HTTP/2 ଥିଲା।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ