// Set up a connection to myself via ephemeral ports func SelfConnection() (net.Conn, net.Conn) { listener, err := net.Listen("tcp", ":0") if err != nil { log.Fatal("Could not set up listen: ", err) } defer listener.Close() inconnch := make(chan net.Conn) go func() { conn, err := listener.Accept() if err != nil { log.Fatal("Couldn't receive connection") } inconnch <- conn }() outconn, _ := net.Dial("tcp", listener.Addr().String()) inconn := <-inconnch return inconn, outconn }
func run() { defer func() { donech <- true }() conn, err := direct.Dial("http://localhost:8080/streamz") if err != nil { log.Fatal("failed to direct dial:", err) } ch := streamz.Channelify(conn) timeout := time.After(time.Duration(rand.Intn(10)) * time.Second) for s := range ch { select { case <-timeout: return default: } log.Print(s.Key, "=", s.Value) } }