add gracefully shut down server

This commit is contained in:
Gardient
2018-11-10 23:51:32 +02:00
parent 6f04c2bef5
commit 8c32721aa9

38
httpserver.go Normal file
View File

@@ -0,0 +1,38 @@
package utils
import (
"context"
"log"
"net/http"
"os"
"os/signal"
"time"
)
// StartHTTPServer cct
func StartHTTPServer(address string, handler http.HandlerFunc) {
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt)
srv := &http.Server{Addr: address}
http.HandleFunc("/", handler)
go func() {
log.Print("listening on http://" + address)
if err := srv.ListenAndServe(); err != nil {
log.Fatal(err)
}
}()
<-stop
log.Print("Shutting down...")
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
srv.Shutdown(ctx)
log.Print("Shut Down")
}