Rod Hynes 35eb3c1b3d Patch vendored quic-go to mitigate race conditions 6 жил өмнө
..
h2quic 35eb3c1b3d Patch vendored quic-go to mitigate race conditions 6 жил өмнө
internal 526827ba0d Update vendored quic-go 7 жил өмнө
qerr 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
Changelog.md a6319cbe48 Update vendored quic-go for v44 support 7 жил өмнө
LICENSE 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
README.md f960bf193a Update quic-go 7 жил өмнө
appveyor.yml 526827ba0d Update vendored quic-go 7 жил өмнө
buffer_pool.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
client.go 68432a251f Patch vendored quic-go to fix gQUICv44 7 жил өмнө
codecov.yml 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
conn.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
crypto_stream.go 16842adc1c Update vendored quic-go 7 жил өмнө
frame_sorter.go a6319cbe48 Update vendored quic-go for v44 support 7 жил өмнө
framer.go 16842adc1c Update vendored quic-go 7 жил өмнө
go.mod 526827ba0d Update vendored quic-go 7 жил өмнө
go.sum 526827ba0d Update vendored quic-go 7 жил өмнө
interface.go a6319cbe48 Update vendored quic-go for v44 support 7 жил өмнө
mint_utils.go dbd3b9f176 QUIC-OSSH updates 7 жил өмнө
mockgen.go 16842adc1c Update vendored quic-go 7 жил өмнө
mockgen_private.sh dbd3b9f176 QUIC-OSSH updates 7 жил өмнө
multiplexer.go dbd3b9f176 QUIC-OSSH updates 7 жил өмнө
packet_handler_map.go a6319cbe48 Update vendored quic-go for v44 support 7 жил өмнө
packet_number_generator.go 526827ba0d Update vendored quic-go 7 жил өмнө
packet_packer.go 526827ba0d Update vendored quic-go 7 жил өмнө
packet_packer_legacy.go 68432a251f Patch vendored quic-go to fix gQUICv44 7 жил өмнө
packet_unpacker.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
receive_stream.go 35eb3c1b3d Patch vendored quic-go to mitigate race conditions 6 жил өмнө
send_stream.go 526827ba0d Update vendored quic-go 7 жил өмнө
server.go 526827ba0d Update vendored quic-go 7 жил өмнө
server_session.go a6319cbe48 Update vendored quic-go for v44 support 7 жил өмнө
server_tls.go 526827ba0d Update vendored quic-go 7 жил өмнө
session.go 526827ba0d Update vendored quic-go 7 жил өмнө
stream.go 16842adc1c Update vendored quic-go 7 жил өмнө
streams_map.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_generic_helper.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_incoming_bidi.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_incoming_generic.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_incoming_uni.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_legacy.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_outgoing_bidi.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_outgoing_generic.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
streams_map_outgoing_uni.go 49f92dcb5e Vendor quic-go and errgroup 7 жил өмнө
window_update_queue.go 16842adc1c Update vendored quic-go 7 жил өмнө

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.