github.com/ooni/psiphon/tunnel-core@v0.0.0-20230105123940-fe12a24c96ee/oovendor/quic-go/README.md (about) 1 # A QUIC implementation in pure Go 2 3 <img src="docs/quic.png" width=303 height=124> 4 5 [](https://pkg.go.dev/github.com/lucas-clemente/quic-go) 6 [](https://codecov.io/gh/lucas-clemente/quic-go/) 7 8 quic-go is an implementation of the [QUIC protocol, RFC 9000](https://datatracker.ietf.org/doc/html/rfc9000) protocol in Go. 9 In addition to RFC 9000, it currently implements the [IETF QUIC draft-29](https://tools.ietf.org/html/draft-ietf-quic-transport-29). Support for draft-29 will eventually be dropped, as it is phased out of the ecosystem. 10 11 ## Guides 12 13 *We currently support Go 1.16.x, Go 1.17.x, and Go 1.18.x.* 14 15 Running tests: 16 17 go test ./... 18 19 ### QUIC without HTTP/3 20 21 Take a look at [this echo example](example/echo/echo.go). 22 23 ## Usage 24 25 ### As a server 26 27 See the [example server](example/main.go). Starting a QUIC server is very similar to the standard lib http in go: 28 29 ```go 30 http.Handle("/", http.FileServer(http.Dir(wwwDir))) 31 http3.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil) 32 ``` 33 34 ### As a client 35 36 See the [example client](example/client/main.go). Use a `http3.RoundTripper` as a `Transport` in a `http.Client`. 37 38 ```go 39 http.Client{ 40 Transport: &http3.RoundTripper{}, 41 } 42 ``` 43 44 ## Projects using quic-go 45 46 | Project | Description | Stars | 47 |------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-------| 48 | [algernon](https://github.com/xyproto/algernon) | Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support |  | 49 | [caddy](https://github.com/caddyserver/caddy/) | Fast, multi-platform web server with automatic HTTPS |  | 50 | [go-ipfs](https://github.com/ipfs/go-ipfs) | IPFS implementation in go |  | 51 | [nextdns](https://github.com/nextdns/nextdns) | NextDNS CLI client (DoH Proxy) |  | 52 | [syncthing](https://github.com/syncthing/syncthing/) | Open Source Continuous File Synchronization |  | 53 | [traefik](https://github.com/traefik/traefik) | The Cloud Native Application Proxy |  | 54 | [v2ray-core](https://github.com/v2fly/v2ray-core) | A platform for building proxies to bypass network restrictions |  | 55 | [cloudflared](https://github.com/cloudflare/cloudflared) | A tunneling daemon that proxies traffic from the Cloudflare network to your origins |  | 56 | [OONI Probe](https://github.com/ooni/probe-cli) | The Open Observatory of Network Interference (OONI) aims to empower decentralized efforts in documenting Internet censorship around the world. |  | 57 58 59 ## Contributing 60 61 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](https://github.com/lucas-clemente/quic-go/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). If you have any questions, please feel free to reach out by opening an issue or leaving a comment.