diff --git a/src/main.go b/src/main.go index f355cdd..4ef6d93 100644 --- a/src/main.go +++ b/src/main.go @@ -1,12 +1,14 @@ package main import ( + "bufio" "context" "fmt" "log" "github.com/libp2p/go-libp2p" "github.com/libp2p/go-libp2p-core/host" + "github.com/libp2p/go-libp2p-core/network" relayv1 "github.com/libp2p/go-libp2p/p2p/protocol/circuitv1/relay" libp2pquic "github.com/libp2p/go-libp2p/p2p/transport/quic" "github.com/libp2p/go-libp2p/p2p/transport/tcp" @@ -54,6 +56,28 @@ func run() { return } + h1.SetStreamHandler("/echo/1.0.0", func(s network.Stream) { + log.Println("listener received new stream") + + // Read whatever comes in and print it out + // from https://github.com/libp2p/go-libp2p/blob/621eafcecde611b27bbb42dda4b8bbc97b66e907/examples/echo/main.go#L197 + if err := func(s network.Stream) error { + buf := bufio.NewReader(s) + str, err := buf.ReadString('\n') + if err != nil { + log.Printf("error reading stream: %v\n", err) + return err + } + log.Printf("read: %s", str) + _, err = s.Write([]byte(str)) + return err + }(s); err != nil { + log.Println(err) + s.Reset() + } else { + s.Close() + } + }) fullAddr := func(ha host.Host) string { // Build host multiaddress hostAddr, _ := ma.NewMultiaddr(fmt.Sprintf("/p2p/%s", ha.ID().Pretty()))