1082ac1c36 | ||
---|---|---|
.. | ||
internal | ||
logging | ||
quicvarint | ||
.editorconfig | ||
.gitignore | ||
.golangci.yml | ||
.travis.yml | ||
Changelog.md | ||
LICENSE | ||
README.md | ||
buffer_pool.go | ||
client.go | ||
closed_session.go | ||
codecov.yml | ||
config.go | ||
conn.go | ||
conn_generic.go | ||
conn_helper_darwin.go | ||
conn_helper_freebsd.go | ||
conn_helper_linux.go | ||
conn_id_generator.go | ||
conn_id_manager.go | ||
conn_oob.go | ||
conn_windows.go | ||
crypto_stream.go | ||
crypto_stream_manager.go | ||
datagram_queue.go | ||
frame_sorter.go | ||
framer.go | ||
go.mod | ||
go.sum | ||
interface.go | ||
mockgen.go | ||
mockgen_private.sh | ||
mtu_discoverer.go | ||
multiplexer.go | ||
packet_handler_map.go | ||
packet_packer.go | ||
packet_unpacker.go | ||
receive_stream.go | ||
retransmission_queue.go | ||
send_conn.go | ||
send_queue.go | ||
send_stream.go | ||
server.go | ||
session.go | ||
stream.go | ||
streams_map.go | ||
streams_map_generic_helper.go | ||
streams_map_incoming_bidi.go | ||
streams_map_incoming_generic.go | ||
streams_map_incoming_uni.go | ||
streams_map_outgoing_bidi.go | ||
streams_map_outgoing_generic.go | ||
streams_map_outgoing_uni.go | ||
token_store.go | ||
window_update_queue.go |
README.md
A QUIC implementation in pure Go
quic-go is an implementation of the QUIC protocol in Go. It implements the IETF QUIC draft-29, draft-32 and draft-34.
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.
When using quic-go as a library, please always use a tagged release. Only these releases use the official draft version numbers.
Guides
We currently support Go 1.15+, with Go modules support enabled.
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.