SkillAgentSearch skills...

Unixtransport

Support for Unix domain sockets in Go HTTP clients

Install / Use

/learn @peterbourgon/Unixtransport
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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.

View on GitHub
GitHub Stars85
CategoryCustomer
Updated23d ago
Forks5

Languages

Go

Security Score

95/100

Audited on Mar 10, 2026

No findings