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 سلسلہ ٹرانسپورٹ کے حوالے کرنا ہے، نہ جواب اور نہ بعد کے تمام بائٹس کے لیے زندگی بھر کی پالیسی۔