1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| package main
import ( "context" "log" "net/http" "os" "os/signal" )
func main() { var srv http.Server quit := make(chan struct{}) go func() { signals := make(chan os.Signal, 1) signal.Notify(signals, os.Interrupt) <-signals log.Println("Shutting down server...") if err := srv.Shutdown(context.Background()); err != nil { log.Println(err) } close(quit) }() if err := srv.ListenAndServe(); err != http.ErrServerClosed { log.Println(err) } <-quit }
|