quic-go is an implementation of the QUIC protocol, RFC 9000 protocol in Go. In addition to RFC 9000, it currently implements the IETF QUIC draft-29, draft-32 and draft-34. Support for draft versions will be eventually be dropped, as these are phased out of the ecosystem.
We currently support Go 1.15+, with Go modules support enabled.
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{},
}
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.