Go ସନ୍ଦର୍ଭକୁ SOCKS ସଂଯୋଗ ସେଟଅପ୍ ବାତିଲ କରିବାକୁ ଦିଅନ୍ତୁ
Go SOCKS ପଥ ପାଇଁ ରପ୍ତାନି ହୋଇଥିବା ContextDialer ଇଣ୍ଟରଫେସ୍ ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ ସଂଯୋଗ ବାତିଲକୁ ପରବର୍ତ୍ତୀ ଆପ୍ଲିକେସନ୍ ଟ୍ରାଫିକର ସମୟସୀମାରୁ ଅଲଗା କରନ୍ତୁ।
func dialViaSOCKS(ctx context.Context, destination string) (net.Conn, error) {
dialer, err := proxy.SOCKS5(
"tcp",
"127.0.0.1:1080",
nil,
&net.Dialer{Timeout: 5 * time.Second},
)
if err != nil {
return nil, err
}
contextDialer, ok := dialer.(proxy.ContextDialer)
if !ok {
return nil, errors.New("SOCKS dialer lacks context support")
}
return contextDialer.DialContext(ctx, "tcp", destination)
}ବିଦ୍ୟମାନ Go ନେଟୱାର୍କିଂ ପ୍ୟାକେଜ୍ ଭିତରେ context, errors, net, time ଏବଂ x/net/proxy ଆମଦାନୀ ବ୍ୟବହାର କରନ୍ତୁ। nil ଆର୍ଗୁମେଣ୍ଟ କୌଣସି SOCKS ପ୍ରମାଣପତ୍ର ଚୟନ କରେ ନାହିଁ। ଅନୁମତିପ୍ରାପ୍ତ ସାର୍ବଜନୀନ-ପ୍ରକ୍ସି ପଥରେ ସାର୍ବଜନୀନ ଗନ୍ତବ୍ୟ ପାଇଁ SOCKS5 ପ୍ରକ୍ସି ତାଲିକା dialer ର ଏଣ୍ଡପଏଣ୍ଟ ପାଇଁ ପ୍ରାର୍ଥୀ ପ୍ରଦାନ କରେ।
ରପ୍ତାନି ହୋଇଥିବା proxy.ContextDialer ଦାବି ଅସମର୍ଥିତ କାର୍ଯ୍ୟାନ୍ୱୟନକୁ ସ୍ପଷ୍ଟ ଭାବରେ ବିଫଳ କରେ। ଆଭ୍ୟନ୍ତରୀଣ dialer ପ୍ରକାରର ନାମ ଦେବା କିମ୍ବା କଲର ପରିଚାଳନା କରିପାରିବ ନାହିଁ ଏପରି ଅବରୋଧକ goroutine ଆରମ୍ଭ କରିବା ପରିବର୍ତ୍ତେ ନିୟୋଜିତ ନିର୍ଭରତା ଯାଞ୍ଚ କରନ୍ତୁ।
ସନ୍ଦର୍ଭ ସଂଯୋଗ ସ୍ଥାପନାକୁ ନିୟନ୍ତ୍ରଣ କରେ। net.Conn ଫେରାଇଦିଆଯିବା ପରେ ଉପଯୁକ୍ତ ପଠନ/ଲେଖନ କିମ୍ବା ଉଚ୍ଚ-ସ୍ତରୀୟ ଅନୁରୋଧ ସମୟସୀମା ଲାଗୁ କରନ୍ତୁ। ମୂଳ dialer ର ସଂଯୋଗ ଟାଇମଆଉଟ ଏବଂ ଏକ ଆପ୍ଲିକେସନର ମୋଟ ବଜେଟ ଭିନ୍ନ ସୀମା।
HTTP ପରିବହନ ଏକୀକରଣ ପାଇଁ ଏହାର ସାଧାରଣ TLS ଏବଂ HTTP ଆଚରଣ ବଜାୟ ରଖନ୍ତୁ। ଫେରାଇଦିଆଯାଇଥିବା ସନ୍ଦର୍ଭ-ସଚେତନ SOCKS ପ୍ରବାହ ପରିବହନକୁ ହସ୍ତାନ୍ତର, ପ୍ରତିକ୍ରିୟା ନୁହେଁ ଏବଂ ପରବର୍ତ୍ତୀ ସମସ୍ତ ବାଇଟ ପାଇଁ ଜୀବନକାଳ ନୀତି ନୁହେଁ।