go-peer/pkg/network/examples/echo/main.go
2026-06-01 21:36:46 +07:00

53 lines
1.0 KiB
Go

package main
import (
"context"
"fmt"
"time"
"github.com/number571/go-peer/pkg/crypto/scheme/layer1"
"github.com/number571/go-peer/pkg/network"
"github.com/number571/go-peer/pkg/network/conn"
)
// client <-> service
const (
serviceHeader = 0xDEADBEAF
serviceAddress = "127.0.0.1:8080"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
var (
_ = runServiceNode(ctx)
conn, _ = conn.Connect(ctx, connSettings(), serviceAddress)
)
_ = conn.WriteMessage(
ctx,
layer1.NewMessage(
layer1.NewConstructSettings(&layer1.SConstructSettings{
FSettings: conn.GetSettings().GetMessageSettings(),
}),
[]byte("hello, world!"),
),
)
readCh := make(chan struct{})
go func() { <-readCh }()
recvMsg, _ := conn.ReadMessage(ctx, readCh)
fmt.Println(string(recvMsg.GetBody()))
}
func runServiceNode(ctx context.Context) network.INode {
node := newNode(serviceAddress)
go func() { _ = node.Run(ctx) }()
time.Sleep(time.Second) // wait listener
return node
}