diff --git a/README.md b/README.md index 433b0ad..7e9b119 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Create http server listening on unix sockets or systemd socket activated fds +Create http server listening on unix sockets and systemd socket activated fds ## Quick Usage @@ -44,14 +44,29 @@ Examples: ### TCP port -If the address is a number less than 65536, it is assumed as a port and passed as `http.ListenAndServe(":",...)` - -Anything else is directly passed to `http.ListenAndServe` as well. Below examples should work +If the address is a number less than 65536, it is assumed as a port and passed +as `http.ListenAndServe(":",...)` Anything else is directly passed to +`http.ListenAndServe` as well. Below examples should work :http :8888 127.0.0.1:8080 +## Idle server auto shutdown + +When using systemd socket activation, idle servers can be shut down to save on +resources. They will be restarted with socket activation when new request +arrives. Quick example for the case. (Error checking skipped for brevity) + +```go +addrType, httpServer, done, _ := anyhttp.Serve(addr, idle.WrapHandler(nil)) +if addrType == anyhttp.SystemdFD { + idle.Wait(30 * time.Minute) + httpServer.Shutdown(context.TODO()) +} +<-done +``` + ## Documentation https://pkg.go.dev/go.balki.me/anyhttp @@ -59,4 +74,4 @@ https://pkg.go.dev/go.balki.me/anyhttp ### Related links * https://gist.github.com/teknoraver/5ffacb8757330715bcbcc90e6d46ac74#file-unixhttpd-go - * https://github.com/coreos/go-systemd/tree/main/activation \ No newline at end of file + * https://github.com/coreos/go-systemd/tree/main/activation