Skip to content

Yarchmage/quic-go

This branch is 3027 commits behind quic-go/quic-go:master.

Folders and files

NameName
Last commit message
Last commit date
Mar 1, 2019
Feb 27, 2019
Jun 22, 2019
May 3, 2016
Jul 13, 2019
Jul 18, 2019
Jul 16, 2019
Jul 16, 2019
Jun 20, 2019
Apr 15, 2016
Jun 20, 2019
Apr 11, 2019
Mar 1, 2019
Jun 27, 2019
Dec 14, 2016
Jul 1, 2019
Mar 1, 2019
Mar 5, 2019
Mar 5, 2019
Jul 6, 2019
Jul 6, 2019
Jun 20, 2019
Mar 9, 2017
Nov 27, 2018
Feb 6, 2019
Apr 1, 2019
Apr 1, 2019
Feb 6, 2019
Jan 23, 2019
Jan 23, 2019
Apr 26, 2019
Apr 26, 2019
Jul 16, 2019
Jul 16, 2019
Jun 22, 2019
Mar 5, 2019
Mar 5, 2019
Mar 5, 2019
Apr 22, 2019
Mar 8, 2019
Mar 5, 2019
Mar 8, 2019
Mar 5, 2019
Jun 22, 2019
Mar 5, 2019
Jun 22, 2019
Mar 5, 2019
Mar 8, 2019
Mar 5, 2019
Mar 5, 2019
Jun 22, 2019
Mar 5, 2019
May 10, 2019
Mar 5, 2019
Dec 14, 2018
Aug 11, 2018
Mar 8, 2019
Mar 8, 2019
May 10, 2019
Mar 8, 2019
Jul 1, 2019
Jul 1, 2019
Jun 30, 2019
Jun 30, 2019
Oct 30, 2018
Jan 24, 2019
Jan 24, 2019
Feb 27, 2019
Jan 24, 2019
Jun 29, 2019
Jun 22, 2019
Jun 30, 2019
Jun 30, 2019
Nov 4, 2018
Oct 30, 2018
Jun 22, 2019
Nov 10, 2018
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Jun 22, 2019
Sep 19, 2018
Sep 19, 2018

Repository files navigation

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. It roughly implements the IETF QUIC draft, although we don't fully support any of the draft versions at the moment.

Version compatibility

Since quic-go is under active development, there's no guarantee that two builds of different commits are interoperable. The QUIC version used in the master branch is just a placeholder, and should not be considered stable.

If you want to use quic-go as a library in other projects, please consider using a tagged release. These releases expose experimental QUIC versions, which are guaranteed to be stable.

Google QUIC

quic-go used to support both the QUIC versions supported by Google Chrome and QUIC as deployed on Google's servers, as well as IETF QUIC. Due to the divergence of the two protocols, we decided to not support both versions any more.

The master branch only supports IETF QUIC. For Google QUIC support, please refer to the gquic branch.

Guides

We currently support Go 1.12+, with Go modules support enabled.

Installing and updating dependencies:

go get -u ./...

Running tests:

go test ./...

QUIC without HTTP/3

Take a look at this echo example.

Usage

As a server

See the example server. Starting a QUIC server is very similar to the standard lib http in go:

http.Handle("/", http.FileServer(http.Dir(wwwDir)))
http3.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)

As a client

See the example client. Use a http3.RoundTripper as a Transport in a http.Client.

http.Client{
  Transport: &http3.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.

About

A QUIC implementation in pure go

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.7%
  • Other 0.3%