Darien Raymond afba7a45c9 add missing files hace 7 años
..
internal 61ad81c326 implement ReadMultiBuffer in quic conn hace 7 años
vendor 19926b8e4f update quic hace 7 años
Changelog.md 14c2d415d2 update vendor directory hace 7 años
LICENSE 14c2d415d2 update vendor directory hace 7 años
README.md 19926b8e4f update quic hace 7 años
appveyor.yml 19926b8e4f update quic hace 7 años
buffer_pool.go e99dd29946 update putPacketBuffer hace 7 años
client.go 135bf169c0 update quic vendor hace 7 años
codecov.yml 14c2d415d2 update vendor directory hace 7 años
conn.go 14c2d415d2 update vendor directory hace 7 años
crypto_stream.go 19926b8e4f update quic hace 7 años
crypto_stream_manager.go 19926b8e4f update quic hace 7 años
frame_sorter.go 19926b8e4f update quic hace 7 años
framer.go 19926b8e4f update quic hace 7 años
interface.go afba7a45c9 add missing files hace 7 años
mockgen.go 19926b8e4f update quic hace 7 años
mockgen_private.sh 14c2d415d2 update vendor directory hace 7 años
multiplexer.go 14c2d415d2 update vendor directory hace 7 años
packet_handler_map.go 135bf169c0 update quic vendor hace 7 años
packet_packer.go 61ad81c326 implement ReadMultiBuffer in quic conn hace 7 años
packet_unpacker.go 61ad81c326 implement ReadMultiBuffer in quic conn hace 7 años
receive_stream.go afba7a45c9 add missing files hace 7 años
send_stream.go fd060a0880 temp fix deadlock in quic lib hace 7 años
server.go 61ad81c326 implement ReadMultiBuffer in quic conn hace 7 años
server_session.go 135bf169c0 update quic vendor hace 7 años
session.go 61ad81c326 implement ReadMultiBuffer in quic conn hace 7 años
stream.go 19926b8e4f update quic hace 7 años
streams_map.go 19926b8e4f update quic hace 7 años
streams_map_generic_helper.go 19926b8e4f update quic hace 7 años
streams_map_incoming_bidi.go 19926b8e4f update quic hace 7 años
streams_map_incoming_generic.go 19926b8e4f update quic hace 7 años
streams_map_incoming_uni.go 19926b8e4f update quic hace 7 años
streams_map_outgoing_bidi.go 19926b8e4f update quic hace 7 años
streams_map_outgoing_generic.go 19926b8e4f update quic hace 7 años
streams_map_outgoing_uni.go 19926b8e4f update quic hace 7 años
window_update_queue.go 19926b8e4f update quic hace 7 años

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

Installing and updating dependencies:

go get -t -u ./...

Running tests:

go test ./...

HTTP mapping

We're currently not implementing the HTTP mapping as described in the QUIC over HTTP draft. The HTTP mapping here is a leftover from Google QUIC.

QUIC without HTTP/2

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)))
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.