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 प्रवाह ट्रान्सपोर्टकडे हस्तांतरण आहे, प्रतिसाद नाही आणि पुढील सर्व बाइट्ससाठी आयुष्यमान धोरण नाही.