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 урсгал нь тээвэрт хүлээлгэн өгөх үйлдэл бөгөөд хариу ч биш, дараагийн бүх байтын амьдрах хугацааны бодлого ч биш.

Холбоотой нийтлэлүүд