Lëreni një kontekst Go të anulojë vendosjen e lidhjes SOCKS
Përdorni ndërfaqen e eksportuar ContextDialer për një rrugë SOCKS në Go dhe dalloni anulimin e lidhjes nga afatet e trafikut të mëvonshëm të aplikacionit.
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)
}Brenda një pakete ekzistuese rrjeti Go, përdorni importet context, errors, net, time dhe x/net/proxy. Argumenti nil nuk zgjedh kredenciale SOCKS. Për një destinacion publik në një rrugë proxy publik të lejuar, lista e proxy-ve SOCKS5 ofron kandidatë për pikën fundore të dialer-it.
Pohimi i eksportuar proxy.ContextDialer i bën implementimet e pambështetura të dështojnë në mënyrë eksplicite. Kontrolloni varësinë e vendosur në vend që të emërtoni një tip dialer të brendshëm ose të nisni një goroutine bllokuese që thirrësi nuk mund ta menaxhojë.
Konteksti drejton vendosjen e lidhjes. Pasi kthehet një net.Conn, aplikoni afate të përshtatshme leximi/shkrimi ose afate kërkese të nivelit më të lartë. Afati i lidhjes së dialer-it bazë dhe buxheti total i një aplikacioni janë kufij të ndryshëm.
Për një integrim të transportit HTTP, ruani sjelljen normale TLS dhe HTTP. Rrjedha SOCKS e vetëdijshme për kontekstin që kthehet është dorëzimi te transporti, jo një përgjigje dhe as një politikë jetëgjatësie për të gjitha bajtët e mëvonshëm.