اجازه ورکړئ چې د Go context د 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 پیلولو پرځای چې غوښتونکی یې مدیریت نه شي کولی، ځای پر ځای شوې تکیه وګورئ.
context د اړیکې جوړولو کنټرول کوي. کله چې net.Conn بیرته راوګرځي، مناسب لوستل/لیکل یا لوړې کچې غوښتنې مهلتونه پلي کړئ. د بنسټیز dialer د اړیکې وخت پای او د اپلیکیشن ټول بودیجه بېلې حدونه دي.
د HTTP لیږد ادغام لپاره د هغې نورمال TLS او HTTP چلند وساتئ. راګرځېدلی context-پوه SOCKS جریان لیږد ته سپارل دی، نه ځواب او نه د ټولو وروستیو بایټونو لپاره د ژوند پالیسي.