package main import ( "log" "os" "os/signal" "syscall" "github.com/noahlann/nnet/pkg/nnet" ) // This example demonstrates using a frame-data matcher to route JSON payloads. // Try: // // printf '{"op":"ping"}\n' | nc localhost 8081 // printf '{"op":"echo","msg":"hello"}\n' | nc localhost 8081 func main() { cfg := &nnet.Config{ Addr: "tcp://:8081", Codec: &nnet.CodecConfig{ DefaultCodec: "json", EnableProtocolEncode: false, }, } srv, err := nnet.NewServer(cfg) if err != nil { log.Fatal("create server:", err) } // Route 1: op == "ping" srv.Router().RegisterFrameData("op", "==", "ping", func(ctx nnet.Context) error { return ctx.Response().Write(map[string]any{"pong": true}) }) // Route 2: op == "echo" srv.Router().RegisterFrameData("op", "==", "echo", func(ctx nnet.Context) error { // Echo back raw request return ctx.Response().Write(map[string]any{"echo": string(ctx.Request().Raw())}) }) log.Println("router_frame_data listening on :8081 (JSON)") if err := srv.Start(); err != nil { log.Fatal("start server:", err) } defer srv.Stop() quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) <-quit }