package main import ( "fmt" "os" "os/signal" "pro2d/cmd/httpserver/action" "pro2d/cmd/httpserver/service" "pro2d/common" "pro2d/common/logger" "syscall" ) func main() { err := make(chan error) stopChan := make(chan os.Signal) signal.Notify(stopChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) common.GlobalSconf = common.GlobalConf.AccountConf web := service.NewAccountServer("v1", fmt.Sprintf(":%d", common.GlobalSconf.Port)) web.BindHandler(&action.AccountAction{HttpServer: web}) go func() { err <- web.Start() }() select { case e := <-err: logger.Error("http server error: %v", e) case <-stopChan: logger.Debug("http stop") web.Stop() } }