package app_ser import ( "fmt" "gitea.party/public-messag-service/config/logger" "github.com/urfave/cli/v2" "net/http" ) const ( CliWebIP = "web-ip" CliWebPort = "web-port" ) type WebService struct { BasicService Cfg struct { IP string `yaml:"ip"` // 监听端口 Port int `yaml:"listen"` // 监听端口 RunMode string `yaml:"runmode"` // 服务运行模式 } Handler http.Handler } func (c *WebService) CliFlags() []cli.Flag { return []cli.Flag{ // web &cli.StringFlag{ Name: CliWebIP, Usage: "web service ip", Action: func(_ *cli.Context, s string) error { c.Cfg.IP = s; return nil }, }, &cli.IntFlag{ Name: CliWebPort, Usage: "web service port", Action: func(_ *cli.Context, s int) error { c.Cfg.Port = s; return nil }, }, } } func (c *WebService) Init(cfg *AppConfig, ctx *cli.Context) (logger.Interface, error) { return c.BasicService.Init(c.Cfg.RunMode, cfg, ctx) } func (c *WebService) Run(log logger.Interface, cfg *AppConfig) error { if c.RunBefore != nil { if err := c.RunBefore(); err != nil { return err } } if c.Cfg.IP == "" { log.WarnForce("Listening Server [[[ Run-Mode: %s ]]] http://127.0.0.1:%d\n", cfg.EnvDesc(), c.Cfg.Port) } else { log.WarnForce("Listening Server [[[ Run-Mode: %s ]]] http://%s:%d\n", cfg.EnvDesc(), c.Cfg.IP, c.Cfg.Port) } srv := &http.Server{ Addr: fmt.Sprintf("%s:%d", c.Cfg.IP, c.Cfg.Port), Handler: c.Handler, } srv.SetKeepAlivesEnabled(true) return srv.ListenAndServe() } func (c *WebService) Close() {}