Thanks to visit codestin.com
Credit goes to github.com

Skip to content

peterbourgon/unixtransport

Repository files navigation

unixtransport Go Reference Latest Release Tests

This package adds support for Unix sockets to Go HTTP clients and servers.

Clients

Register the Unix protocol in the default HTTP client transport like this:

unixtransport.RegisterDefault()

Now you can make HTTP requests with URLs like this:

resp, err := http.Get("http+unix:///path/to/socket:/request/path?a=b#fragment")

Use scheme http+unix or https+unix, and use : to separate the socket file path (host) from the URL request path.

See e.g. Register and RegisterDefault for more info.

Servers

If you have this:

fs := flag.NewFlagSet("myserver", flag.ContinueOnError)
addr := fs.String("addr", ":8080", "listen address")
...
http.ListenAndServe(*addr, nil)

You can change it like this:

 fs := flag.NewFlagSet("myserver", flag.ContinueOnError)
 addr := fs.String("addr", ":8080", "listen address")
 ...
-http.ListenAndServe(*addr, nil)
+ln, err := unixtransport.ListenURI(context.TODO(), *addr)
+// handle err
+http.Serve(ln, nil)

Which lets you specify addrs like this:

myserver -addr=:8080                # equivalent to `tcp://:8080`
myserver -addr=tcp://:8080          # listen on all interfaces, TCP port 8080
myserver -addr=udp://0.0.0.0:12345  # listen on all IPv4 interfaces, UDP port 12345
myserver -addr=unix:///tmp/mysocket # listen on Unix socket path /tmp/mysocket

See ParseURI and ListenURI for more info.

Acknowledgements

Inspiration taken from, and thanks given to, both tv42/httpunix and agorman/httpunix.

About

Support for Unix domain sockets in Go HTTP clients

Resources

License

Stars

86 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages