package router import ( "context" "github.com/gin-gonic/gin" cfg "github.com/ichunt2019/cfg/lib" "ichunt_golang/middleware" "log" "net/http" "time" ) var ( HttpSrvHandler *http.Server HttpsSrvHandler *http.Server ) func HttpServerRun() { //debug release test 开发使用debug模式 //fmt.Println(cfg.Instance("proxy").GetString("base.debug_mode")) gin.SetMode(cfg.Instance("proxy").GetString("base.debug_mode")) r := InitRouter(middleware.RequestLog(),middleware.RecoveryMiddleware()) HttpSrvHandler = &http.Server{ Addr: cfg.Instance("proxy").GetString("http.addr"), //Addr: "192.168.1.234:2002", Handler: r, ReadTimeout: time.Duration(cfg.Instance("proxy").GetInt("http.read_timeout")) * time.Second, WriteTimeout: time.Duration(cfg.Instance("proxy").GetInt("http.write_timeout")) * time.Second, MaxHeaderBytes: 1 << uint(cfg.Instance("proxy").GetInt("http.max_header_bytes")), } if err := HttpSrvHandler.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf(" [ERROR] http_proxy_run %s err:%v\n", cfg.Instance("proxy").GetString("http.addr"), err) } } /* 异常退出告警提醒 */ func HttpServerStop() { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() if err := HttpSrvHandler.Shutdown(ctx); err != nil { log.Printf(" [ERROR] http_proxy_stop err:%v\n", err) } log.Printf(" [INFO] http_proxy_stop %v stopped\n", cfg.Instance("proxy").GetString("http.addr")) }