//go:build client package main import ( "flag" "fmt" "log" "os" "time" "github.com/noahlann/nnet/pkg/nnet" ) // This example demonstrates client testing interceptor validation. // Usage: // // go run ./examples/interceptor/client.go -addr tcp://127.0.0.1:8084 -cmd validate -data "hello" // go run ./examples/interceptor/client.go -addr tcp://127.0.0.1:8084 -cmd validate -data "hi" # too short // go run ./examples/interceptor/client.go -addr tcp://127.0.0.1:8084 -cmd validate -data "forbidden" # rejected // go run ./examples/interceptor/client.go -addr tcp://127.0.0.1:8084 -cmd echo -data "test" // go run ./examples/interceptor/client.go -addr tcp://127.0.0.1:8084 -cmd test -data "valid data" func main() { addr := flag.String("addr", "tcp://127.0.0.1:8084", "server address") cmd := flag.String("cmd", "validate", "command to send (validate, echo, test)") data := flag.String("data", "hello world", "data to send") timeout := flag.Duration("timeout", 3*time.Second, "request timeout") flag.Parse() cfg := &nnet.ClientConfig{ Addr: *addr, ConnectTimeout: 3 * time.Second, ReadTimeout: 3 * time.Second, WriteTimeout: 3 * time.Second, } c := nnet.NewClient(cfg) defer c.Close() if err := c.Connect(); err != nil { log.Fatalf("connect failed: %v", err) } defer c.Disconnect() // 构建请求数据 var reqData string switch *cmd { case "validate": // validate命令:发送"validate " + 数据 if *data != "" { reqData = "validate " + *data } else { reqData = "validate" } case "echo", "test": // echo和test命令:只发送命令 reqData = *cmd default: reqData = *cmd } resp, err := c.Request([]byte(reqData), *timeout) if err != nil { fmt.Fprintf(os.Stderr, "request error: %v\n", err) os.Exit(1) } fmt.Printf("response: %s\n", string(resp)) }