go-libp2p-http icon indicating copy to clipboard operation
go-libp2p-http copied to clipboard

client http actions with timeout not working

Open MOHANKUMAR-IT opened this issue 2 years ago • 2 comments

tried 1.)client := &http.Client{Transport: tr, Timeout: 2 * time.Second} 2.) ctx, _ := context.WithTimeout(context.Background(), 2*time.Second) req, _ := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("libp2p://%s/hello", srvHost.ID()), buf) 3.) custom protocol stream, err := clientHost.NewStream(getCtx, srvHost.ID(), "/test")

nothing works , is there any way?

go 1.20

require ( github.com/alitto/pond v1.8.3 github.com/benbjohnson/clock v1.3.5 github.com/gorilla/mux v1.8.0 github.com/ipfs/go-cid v0.4.1 github.com/ipfs/go-log v1.0.5 github.com/ipfs/go-log/v2 v2.5.1 github.com/libp2p/go-libp2p v0.32.1 github.com/libp2p/go-libp2p-gostream v0.6.0 github.com/libp2p/go-libp2p-http v0.5.0 github.com/libp2p/go-libp2p-kad-dht v0.24.3 github.com/libp2p/go-libp2p-pubsub v0.10.0 github.com/multiformats/go-multiaddr v0.12.0 github.com/multiformats/go-multihash v0.2.3 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.17.0 golang.org/x/sync v0.5.0 )

MOHANKUMAR-IT avatar Jan 02 '24 09:01 MOHANKUMAR-IT

`package main

import ( "context" "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/network" "github.com/libp2p/go-libp2p/core/peerstore" "log" "path/filepath" "time"

logging "github.com/ipfs/go-log/v2"
"github.com/libp2p/go-libp2p"

gostream "github.com/libp2p/go-libp2p-gostream"
multiaddr "github.com/multiformats/go-multiaddr"

)

// newHost illustrates how to build a libp2p host with secio using // a randomly generated key-pair func newHost(listen multiaddr.Multiaddr) host.Host { h, err := libp2p.New( libp2p.ListenAddrs(listen), ) if err != nil { log.Fatal(err) } return h }

func TestServerClient() { m1, _ := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/10000") m2, _ := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/10001") srvHost := newHost(m1) clientHost := newHost(m2) defer srvHost.Close() defer clientHost.Close()

srvHost.Peerstore().AddAddrs(clientHost.ID(), clientHost.Addrs(), peerstore.PermanentAddrTTL)
clientHost.Peerstore().AddAddrs(srvHost.ID(), srvHost.Addrs(), peerstore.PermanentAddrTTL)
listener, _ := gostream.Listen(srvHost, "/testiti-test")
srvHost.SetStreamHandler("/test", func(stream network.Stream) {
	log.Println("connected")
	time.Sleep(time.Second * 5)
	b := make([]byte, 1024)
	read, err := stream.Read(b)
	if err != nil {
		log.Println(err, read)
		return
	}
	log.Println("Msg", string(b))
	err = stream.Close()
	if err != nil {
		log.Println(err)
	}
})

defer listener.Close()

getCtx, cancel := context.WithTimeout(context.Background(), time.Second*2)
defer cancel()

stream, err := clientHost.NewStream(getCtx, srvHost.ID(), "/test")
if err != nil {
	log.Println(err)
	return
}

write, err := stream.Write([]byte("hello"))
if err != nil {
	log.Println(write, err)
	return
}

log.Println("Message sent successfully")

select {}

}

func main() { logConfig := logging.GetConfig() logConfig.File = filepath.Join(".\testing.log") logConfig.Stdout = false

logConfig.Level = logging.LevelDebug
logConfig.Stderr = false
logging.SetupLogging(logConfig)

TestServerClient()

} `

MOHANKUMAR-IT avatar Jan 02 '24 11:01 MOHANKUMAR-IT

Not sure what doesn't work. Can you explain and format your message properly for display?

hsanjuan avatar Mar 26 '24 11:03 hsanjuan