66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
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() {}
|