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 প্ৰক্সি তালিকাই ডাইলাৰৰ এণ্ডপইণ্টৰ বাবে প্ৰাৰ্থী আগবঢ়ায়।
প্ৰকাশিত proxy.ContextDialer দাবীয়ে অসমৰ্থিত বাস্তৱায়নক স্পষ্টভাৱে বিফল কৰে। অন্তৰ্নিহিত ডাইলাৰ প্ৰকাৰৰ নাম লোৱাৰ পৰিবৰ্তে বা কলাৰে পৰিচালনা কৰিব নোৱাৰা ব্লকিং গোৰুটিন আৰম্ভ কৰাৰ পৰিবৰ্তে স্থাপন কৰা নিৰ্ভৰশীলতা পৰীক্ষা কৰক।
কনটেক্সটে সংযোগ স্থাপন নিয়ন্ত্ৰণ কৰে। net.Conn ঘূৰাই দিয়াৰ পিছত, উপযুক্ত পঢ়া/লেখা বা উচ্চ-পৰ্যায়ৰ অনুৰোধ সময়সীমা প্ৰয়োগ কৰক। এটা মূল ডাইলাৰৰ সংযোগ সময়সীমা আৰু এটা এপ্লিকেচনৰ মুঠ বাজেট বেলেগ বেলেগ সীমা।
HTTP পৰিবহণ সংহতিৰ বাবে, ইয়াৰ স্বাভাৱিক TLS আৰু HTTP আচৰণ ৰাখক। ঘূৰাই দিয়া কনটেক্সট-সচেতন SOCKS স্ট্ৰিম হৈছে পৰিবহণ হস্তান্তৰ, কোনো সঁহাৰি নহয় বা পিছৰ সকলো বাইটৰ বাবে জীৱনকাল নীতি নহয়।