43 lines
		
	
	
		
			651 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			651 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"fmt"
 | |
| 	"log"
 | |
| 	"net/http"
 | |
| 	"os"
 | |
| 	"os/signal"
 | |
| 	"syscall"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/gin-gonic/gin"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	core := gin.New()
 | |
| 	registerRouter(core)
 | |
| 	server := &http.Server{
 | |
| 		Addr:    ":8080",
 | |
| 		Handler: core,
 | |
| 	}
 | |
| 
 | |
| 	go func() {
 | |
| 		server.ListenAndServe()
 | |
| 	}()
 | |
| 
 | |
| 	// create quit channel
 | |
| 	quit := make(chan os.Signal, 1)
 | |
| 
 | |
| 	// set notifier
 | |
| 	signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
 | |
| 
 | |
| 	<-quit
 | |
| 	fmt.Println("YOLO")
 | |
| 
 | |
| 	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
 | |
| 	defer cancel()
 | |
| 	if err := server.Shutdown(ctx); err != nil {
 | |
| 		log.Fatal("server shutdown: ", err)
 | |
| 	}
 | |
| }
 |