基于net.TCPListener的无间断重启服务,暴露listener供业务代码扩充
- 基于HTTP Server通用方法:
package main
import (
"net/http"
"github.com/maxyma/reloader"
)
func main(){
rl := reloader.NewReloader("127.0.0.1:8080")
if err:=rl.Bind(); err==nil {
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("Hello, world!\n"))
})
rl.HttpServe(&http.Server{})
}
}- socket server用法
package main
import (
"net/http"
"github.com/maxyma/reloader"
)
func main(){
rl := reloader.NewReloader("127.0.0.1:9001")
if err:=rl.Bind(); err==nil {
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("Hello, world!\n"))
})
http.Serve(rl.GetListener(), nil)
rl.Wait()
}
}- 重启
$ kill -s HUP ${PID}