12345678910111213141516171819202122232425262728293031323334353637 |
- package internal
- import (
- "context"
- "fmt"
- "net/http"
- "git.i2edu.net/i2/go-zero/core/proc"
- )
- // StartHttp starts a http server.
- func StartHttp(host string, port int, handler http.Handler) error {
- return start(host, port, handler, func(srv *http.Server) error {
- return srv.ListenAndServe()
- })
- }
- // StartHttps starts a https server.
- func StartHttps(host string, port int, certFile, keyFile string, handler http.Handler) error {
- return start(host, port, handler, func(srv *http.Server) error {
- // certFile and keyFile are set in buildHttpsServer
- return srv.ListenAndServeTLS(certFile, keyFile)
- })
- }
- func start(host string, port int, handler http.Handler, run func(srv *http.Server) error) error {
- server := &http.Server{
- Addr: fmt.Sprintf("%s:%d", host, port),
- Handler: handler,
- }
- waitForCalled := proc.AddWrapUpListener(func() {
- server.Shutdown(context.Background())
- })
- defer waitForCalled()
- return run(server)
- }
|