quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. It has support for HTTP/3 (RFC 9114), including QPACK (RFC 9204).
In addition to these base PR, it also implements the following RFS:
- Unreliable Datagram Extension (RFC 9221)
- Datagram Packetization Layer Path MTU Discovery (DPLPMTUD, RFC 8899)
- QUIC Version 2 (RFC 9369)
In addition to the RFCs listed above, it currently implements the IETF QUIC draft-29. Support for draft-29 will eventually be dropped, as it is phased out of the ecosystem.
We currently support Go 1.19.x and Go 1.20.x
Running tests:
go test ./...
Take a look at this echo example.
See the example server. Starting a QUIC server is very similar to the standard lib http in go:
http.Handle("/", http.FileServer(http.Dir(wwwDir)))
http3.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)
See the example client. Use a http3.RoundTripper
as a Transport
in a http.Client
.
http.Client{
Transport: &http3.RoundTripper{},
}
Project | Description | Stars |
---|---|---|
AdGuardHome | Free and open source, powerful network-wide ads & trackers blocking DNS server. | |
algernon | Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support | |
caddy | Fast, multi-platform web server with automatic HTTPS | |
cloudflared | A tunneling daemon that proxies traffic from the Cloudflare network to your origins | |
go-libp2p | libp2p implementation in Go, powering Kubo (IPFS) and Lotus (Filecoin), among others | |
Mercure | An open, easy, fast, reliable and battery-efficient solution for real-time communications | |
OONI Probe | Next generation OONI Probe. Library and CLI tool. | |
syncthing | Open Source Continuous File Synchronization | |
traefik | The Cloud Native Application Proxy | |
v2ray-core | A platform for building proxies to bypass network restrictions | |
YoMo | Streaming Serverless Framework for Geo-distributed System |
We are always happy to welcome new contributors! We have a number of self-contained issues that are suitable for first-time contributors, they are tagged with help wanted. If you have any questions, please feel free to reach out by opening an issue or leaving a comment.