Files
go-utils/httpserver.go
2018-11-10 23:51:32 +02:00

39 lines
601 B
Go

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")
}