diff --git a/README.md b/README.md index dc0b459e..9d871f5f 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ quic-go is an implementation of the [QUIC](https://en.wikipedia.org/wiki/QUIC) p Done: - Basic protocol with support for QUIC version 34-36 +- QUIC client - HTTP/2 support - Crypto (RSA / ECDSA certificates, Curve25519 for key exchange, AES-GCM or Chacha20-Poly1305 as stream cipher) - Loss detection and retransmission (currently fast retransmission & RTO) @@ -26,7 +27,6 @@ Major TODOs: - Performance - Better packet loss detection - Connection migration -- QUIC client ## Guides @@ -38,20 +38,26 @@ Running tests: go test ./... -Running the example server: +### Running the example server go run example/main.go -www /var/www/ Using the `quic_client` from chromium: - quic_client --quic-version=32 --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io + 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 +### Using the example client + + go run example/client/main.go https://quic.clemente.io + ## Usage +### As a server + See the [example server](example/main.go) or try out [Caddy](https://github.com/mholt/caddy) (from version 0.9, [instructions here](https://github.com/mholt/caddy/wiki/QUIC)). Starting a QUIC server is very similar to the standard lib http in go: ```go @@ -59,6 +65,16 @@ http.Handle("/", http.FileServer(http.Dir(wwwDir))) h2quic.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil) ``` +### As a client + +See the [example client](example/client/main.go). Use a `QuicRoundTripper` as a `Transport` in a `http.Client`. + +```go +http.Client{ + Transport: &h2quic.QuicRoundTripper{}, +} +``` + ## Building on Windows Due to the low Windows timer resolution (see [StackOverflow question](http://stackoverflow.com/questions/37706834/high-resolution-timers-millisecond-precision-in-go-on-windows)) available with Go 1.6.x, some optimizations might not work when compiled with this version of the compiler. Please use Go 1.7 on Windows.