A QUIC implementation in pure Go
quic-go is an implementation of the QUIC protocol in Go.
Roadmap
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.Guides
We currently support Go 1.8+.Installing and updating dependencies:
go get -t -u ./...
Running tests:go test ./...
Running the example server
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
QUIC without HTTP/2
Take a look at this echo example.Using the example client
go run example/client/main.go https://clemente.io
Usage
As a server
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)
As a client
See the example client. Use ah2quic.RoundTripper
as a Transport
in a http.Client
.http.Client{
Transport: &h2quic.RoundTripper{},
}
from https://github.com/lucas-clemente/quic-go
相关帖子:http://briteming.blogspot.com/2017/05/quic.html
No comments:
Post a Comment