|
|
%!s(int64=6) %!d(string=hai) anos | |
|---|---|---|
| .. | ||
| http3 | %!s(int64=6) %!d(string=hai) anos | |
| internal | %!s(int64=6) %!d(string=hai) anos | |
| quictrace | %!s(int64=6) %!d(string=hai) anos | |
| Changelog.md | %!s(int64=6) %!d(string=hai) anos | |
| LICENSE | %!s(int64=6) %!d(string=hai) anos | |
| README.md | %!s(int64=6) %!d(string=hai) anos | |
| appveyor.yml | %!s(int64=6) %!d(string=hai) anos | |
| buffer_pool.go | %!s(int64=6) %!d(string=hai) anos | |
| client.go | %!s(int64=6) %!d(string=hai) anos | |
| closed_session.go | %!s(int64=6) %!d(string=hai) anos | |
| codecov.yml | %!s(int64=6) %!d(string=hai) anos | |
| conn.go | %!s(int64=6) %!d(string=hai) anos | |
| conn_id_generator.go | %!s(int64=6) %!d(string=hai) anos | |
| conn_id_manager.go | %!s(int64=6) %!d(string=hai) anos | |
| crypto_stream.go | %!s(int64=6) %!d(string=hai) anos | |
| crypto_stream_manager.go | %!s(int64=6) %!d(string=hai) anos | |
| frame_sorter.go | %!s(int64=6) %!d(string=hai) anos | |
| framer.go | %!s(int64=6) %!d(string=hai) anos | |
| go.mod | %!s(int64=6) %!d(string=hai) anos | |
| go.sum | %!s(int64=6) %!d(string=hai) anos | |
| interface.go | %!s(int64=6) %!d(string=hai) anos | |
| mockgen.go | %!s(int64=6) %!d(string=hai) anos | |
| mockgen_private.sh | %!s(int64=6) %!d(string=hai) anos | |
| multiplexer.go | %!s(int64=6) %!d(string=hai) anos | |
| packet_handler_map.go | %!s(int64=6) %!d(string=hai) anos | |
| packet_packer.go | %!s(int64=6) %!d(string=hai) anos | |
| packet_unpacker.go | %!s(int64=6) %!d(string=hai) anos | |
| receive_stream.go | %!s(int64=6) %!d(string=hai) anos | |
| retransmission_queue.go | %!s(int64=6) %!d(string=hai) anos | |
| send_queue.go | %!s(int64=6) %!d(string=hai) anos | |
| send_stream.go | %!s(int64=6) %!d(string=hai) anos | |
| server.go | %!s(int64=6) %!d(string=hai) anos | |
| session.go | %!s(int64=6) %!d(string=hai) anos | |
| stream.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_generic_helper.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_incoming_bidi.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_incoming_generic.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_incoming_uni.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_outgoing_bidi.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_outgoing_generic.go | %!s(int64=6) %!d(string=hai) anos | |
| streams_map_outgoing_uni.go | %!s(int64=6) %!d(string=hai) anos | |
| token_store.go | %!s(int64=6) %!d(string=hai) anos | |
| window_update_queue.go | %!s(int64=6) %!d(string=hai) anos | |
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.
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.
We currently support Go 1.13+, with Go modules support enabled.
Installing and updating dependencies:
go get -u ./...
Running tests:
go test ./...
Take a look at this echo example.
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)
See the example client. Use a http3.RoundTripper as a Transport in a http.Client.
http.Client{
Transport: &http3.RoundTripper{},
}
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.