diff --git a/dial.go b/dial.go index ebc6e1d..562cf39 100644 --- a/dial.go +++ b/dial.go @@ -3,8 +3,10 @@ package tdx import ( "context" "github.com/injoyai/ios" + "math/rand" "net" "strings" + "time" ) func NewHostDial(hosts []string) ios.DialFunc { @@ -26,3 +28,18 @@ func NewHostDial(hosts []string) ios.DialFunc { return c, addr, err } } + +func NewRandomDial(hosts []string) ios.DialFunc { + if len(hosts) == 0 { + hosts = Hosts + } + r := rand.New(rand.NewSource(time.Now().UnixNano())) + return func(ctx context.Context) (ios.ReadWriteCloser, string, error) { + addr := hosts[r.Intn(len(hosts))] + if !strings.Contains(addr, ":") { + addr += ":7709" + } + c, err := net.Dial("tcp", addr) + return c, addr, err + } +}