You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
ginuerzh a01dbfc88c update vendor 7 years ago
..
internal update vendor 7 years ago
qerr add vendor 8 years ago
.editorconfig add vendor 8 years ago
.gitignore add vendor 8 years ago
.gometalinter.json add vendor 8 years ago
.travis.yml add vendor 8 years ago
Changelog.md add vendor 8 years ago
LICENSE add vendor 8 years ago
README.md add vendor 8 years ago
appveyor.yml add vendor 8 years ago
buffer_pool.go add vendor 8 years ago
client.go add vendor 8 years ago
codecov.yml add vendor 8 years ago
conn.go add vendor 8 years ago
crypto_stream.go add vendor 8 years ago
frame_sorter.go add vendor 8 years ago
interface.go add vendor 8 years ago
mint_utils.go add vendor 8 years ago
mockgen.go add vendor 8 years ago
mockgen_private.sh add vendor 8 years ago
multiplexer.go add vendor 8 years ago
packet_handler_map.go add vendor 8 years ago
packet_number_generator.go add vendor 8 years ago
packet_packer.go add vendor 8 years ago
packet_unpacker.go add vendor 8 years ago
receive_stream.go add vendor 8 years ago
send_stream.go add vendor 8 years ago
server.go add vendor 8 years ago
server_session.go add vendor 8 years ago
server_tls.go add vendor 8 years ago
session.go add vendor 8 years ago
stream.go add vendor 8 years ago
stream_framer.go add vendor 8 years ago
streams_map.go add vendor 8 years ago
streams_map_generic_helper.go add vendor 8 years ago
streams_map_incoming_bidi.go add vendor 8 years ago
streams_map_incoming_generic.go add vendor 8 years ago
streams_map_incoming_uni.go add vendor 8 years ago
streams_map_legacy.go add vendor 8 years ago
streams_map_outgoing_bidi.go add vendor 8 years ago
streams_map_outgoing_generic.go add vendor 8 years ago
streams_map_outgoing_uni.go add vendor 8 years ago
window_update_queue.go add vendor 8 years ago

README.md

A QUIC implementation in pure Go

Godoc Reference Travis Build Status CircleCI Build Status Windows Build Status Code Coverage

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.9+.

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 a h2quic.RoundTripper as a Transport in a http.Client.

http.Client{
  Transport: &h2quic.RoundTripper{},
}

Contributing

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.