| | |
| | | import ( |
| | | "context" |
| | | "fmt" |
| | | "gat1400Exchange/nvcs" |
| | | "net/http" |
| | | "os" |
| | | "os/signal" |
| | | "syscall" |
| | | "time" |
| | | |
| | | "gat1400Exchange/client" |
| | | "gat1400Exchange/config" |
| | | "gat1400Exchange/cron" |
| | | "gat1400Exchange/models" |
| | | "gat1400Exchange/pkg/logger" |
| | | "gat1400Exchange/routes" |
| | |
| | | Handler: r, |
| | | } |
| | | |
| | | // 启动网络视频字符叠加器服务 |
| | | go service.NVCSServer() |
| | | go service.DeviceInfoReportTask() |
| | | srv.SetKeepAlivesEnabled(config.ServeConf.Keepalive) |
| | | |
| | | // Initializing the server in a goroutine so that |
| | | // it won't block the graceful shutdown handling below |
| | |
| | | }() |
| | | |
| | | logger.Info("Server is running at %s:%s", host, port) |
| | | |
| | | // 启动1400客户端 |
| | | ctx, cancel := context.WithCancel(context.Background()) |
| | | go client.Init1400Client(ctx) |
| | | |
| | | // 启动网络视频字符叠加器服务 |
| | | go nvcs.StartNVCSServer() |
| | | |
| | | go service.InitSubscribeNotificationTasks() |
| | | |
| | | // 启动定时任务 |
| | | cron.Init() |
| | | |
| | | // Wait for interrupt signal to gracefully shutdown the server with |
| | | // a timeout of 5 seconds. |
| | |
| | | |
| | | // The context is used to inform the server it has 5 seconds to finish |
| | | // the request it is currently handling |
| | | ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) |
| | | defer cancel() |
| | | //ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) |
| | | cancel() |
| | | if err := srv.Shutdown(ctx); err != nil { |
| | | logger.Error("Server forced to shutdown:", err) |
| | | } |
| | | |
| | | service.StopNotificationTasks() |
| | | |
| | | logger.Info("Server exiting!") |
| | | } |