package main
import (
    "context"
    "log"
    "net/http"
    "os"
    "os/signal"
)
func main() {
    var srv http.Server
    idleConnsClosed := make(chan struct{})
    go func() {
        sigint := make(chan os.Signal, 1)
        signal.Notify(sigint, os.Interrupt)
        <-sigint
        // We received an interrupt signal, shut down.
        if err := srv.Shutdown(context.Background()); err != nil {
            // Error from closing listeners, or context timeout:
            log.Printf("HTTP server Shutdown: %v", err)
        }
        close(idleConnsClosed)
    }()
    if err := srv.ListenAndServe(); err != http.ErrServerClosed {
        // Error starting or closing listener:
        log.Printf("HTTP server ListenAndServe: %v", err)
    }
    <-idleConnsClosed
}
文档是https://golang.org/pkg/net/http/#Server.Shutdown。
| 归档时间: | 
 | 
| 查看次数: | 8673 次 | 
| 最近记录: |