package cmds import ( "fmt" "inp2025/middlewares" "inp2025/tcp" "io" "time" "github.com/spf13/cobra" "github.com/spf13/viper" "go.uber.org/zap" ) func pongHandler(w tcp.ResponseWriter, req *tcp.Request) error { w.WriteHeader(tcp.StatusOK) _, err := io.WriteString(w, string(req.Params["msg"])) return err } func tickHandler(w tcp.ResponseWriter, req *tcp.Request) error { zap.L().Info("Run tickHandler") for { w.SocketSendString(fmt.Sprintf("time: %s", time.Now().String())) time.Sleep(time.Second) } return nil } var serverCmd = &cobra.Command{ Use: "server", Run: func(cmd *cobra.Command, args []string) { router := tcp.NewRouter(). Use(middlewares.ErrorHandler). Use(middlewares.AccessLog) router.Register(tcp.MethodSOCKET, "/test", tickHandler) router.Register(tcp.MethodGET, "/test", pongHandler) router.Listen(":" + viper.GetString("port")) }, } func init() { serverCmd.Flags(). String("port", "8080", "") }