Compare commits

..

No commits in common. "main" and "globalIdler" have entirely different histories.

View File

@ -1,4 +1,4 @@
Create http server listening on unix sockets and systemd socket activated fds Create http server listening on unix sockets or systemd socket activated fds
## Quick Usage ## Quick Usage
@ -32,7 +32,7 @@ Syntax
sysd/fdname/<fd name set using FileDescriptorName socket setting > sysd/fdname/<fd name set using FileDescriptorName socket setting >
Examples: Examples:
# First (or only) socket fd passed to app # First (or only) socket fd passed to app
sysd/fdidx/0 sysd/fdidx/0
@ -44,29 +44,14 @@ Examples:
### TCP port ### TCP port
If the address is a number less than 65536, it is assumed as a port and passed If the address is a number less than 65536, it is assumed as a port and passed as `http.ListenAndServe(":<port>",...)`
as `http.ListenAndServe(":<port>",...)` Anything else is directly passed to
`http.ListenAndServe` as well. Below examples should work Anything else is directly passed to `http.ListenAndServe` as well. Below examples should work
:http :http
:8888 :8888
127.0.0.1:8080 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 ## Documentation
https://pkg.go.dev/go.balki.me/anyhttp https://pkg.go.dev/go.balki.me/anyhttp
@ -74,4 +59,4 @@ https://pkg.go.dev/go.balki.me/anyhttp
### Related links ### Related links
* https://gist.github.com/teknoraver/5ffacb8757330715bcbcc90e6d46ac74#file-unixhttpd-go * https://gist.github.com/teknoraver/5ffacb8757330715bcbcc90e6d46ac74#file-unixhttpd-go
* https://github.com/coreos/go-systemd/tree/main/activation * https://github.com/coreos/go-systemd/tree/main/activation