44 lines
869 B
Go
44 lines
869 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
"git.jinshen.cn/remilia/push-server/interval/api"
|
|
"git.jinshen.cn/remilia/push-server/interval/server"
|
|
)
|
|
|
|
func main() {
|
|
_, serverCancel := context.WithCancel(context.Background())
|
|
defer func() {
|
|
serverCancel()
|
|
}()
|
|
|
|
httpServer := server.NewHTTPServer(":8080", api.NewRouter())
|
|
|
|
go func() {
|
|
log.Println("Starting HTTP server on :8080")
|
|
if err := httpServer.Start(); err != nil && err != http.ErrServerClosed {
|
|
log.Fatalf("HTTP server error: %v", err)
|
|
}
|
|
}()
|
|
|
|
sig := make(chan os.Signal, 1)
|
|
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
|
|
<-sig
|
|
|
|
log.Println("Shutting down server...")
|
|
|
|
serverCancel()
|
|
|
|
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), time.Second*10)
|
|
defer shutdownCancel()
|
|
|
|
httpServer.Shutdown(shutdownCtx)
|
|
}
|