THIS IS A FORK.
Please be aware that this is a fork that uses the same import path (lucas-clemente/quic-go). This fork has support for PLUS and is also not up-to-date with the current lucas-clemente/quic-go. Be sure you place this fork under lucas-clemente/quic-go (which you can do by manually cloning it or by git remote trickery).
quic-go is an implementation of the QUIC protocol in Go.
quic-go is compatible with the current version(s) of Google Chrome and QUIC as deployed on Google's servers. We're actively tracking the development of the Chrome code to ensure compatibility as the protocol evolves. In that process, we're dropping support for old QUIC versions. As Google's QUIC versions are expected to converge towards the IETF QUIC draft, quic-go will eventually implement that draft.
We currently support Go 1.7+.
Installing and updating dependencies:
go get -t -u ./...
Running tests:
go test ./...
go run example/main.go -www /var/www/
Using the quic_client
from chromium:
quic_client --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io
Using Chrome:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --no-proxy-server --enable-quic --origin-to-force-quic-on=quic.clemente.io:443 --host-resolver-rules='MAP quic.clemente.io:443 127.0.0.1:6121' https://quic.clemente.io
Take a look at this echo example.
go run example/client/main.go https://clemente.io
See the example server or try out Caddy (from version 0.9, instructions here). Starting a QUIC server is very similar to the standard lib http in go:
http.Handle("/", http.FileServer(http.Dir(wwwDir)))
h2quic.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)
See the example client. Use a QuicRoundTripper
as a Transport
in a http.Client
.
http.Client{
Transport: &h2quic.QuicRoundTripper{},
}
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 want-help. If you have any questions, please feel free to reach out by opening an issue or leaving a comment.