新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

An error occurred while fetching folder content.
chore: Keep go1.19 for go20
Devin Zeng authored
--story=1
27eaf3d8
Name Last commit Last update
.circleci use Go 1.18 on CI
.githooks only run Ginkgo focus detection in staged files in pre-commit hook
.github/workflows use Go 1.18 on CI
.idea qtls v0.1.10
benchmark chore: update gomod
docs add gopher-logo
example chore: update gomod
fuzzing chore: update gomod
http3 chore: update gomod
integrationtests chore: update gomod
internal chore: Keep go1.19 for go20
interop chore: update gomod
logging chore: update gomod
qlog chore: update gomod
quicvarint chore: update gomod
.gitignore update qtls version
.golangci.yml disable the goconst linter
Changelog.md chore: update gomod
LICENSE add Google to license file
README.md use Go 1.18 on CI
buffer_pool.go chore: update gomod
buffer_pool_test.go chore: update gomod
client.go chore: update gomod
client_test.go chore: update gomod
closed_session.go chore: update gomod
closed_session_test.go chore: update gomod
codecov.yml remove support for quic-trace
config.go chore: update gomod
config_test.go chore: update gomod
conn.go chore: update gomod
conn_df.go move set DF implementation to separate files & avoid the need for OOBCapablePacketConn (#3334)
conn_df_linux.go chore: update gomod
conn_df_windows.go chore: update gomod
conn_generic.go sendQueue: ignore "datagram too large" error (#3328)
conn_helper_darwin.go sendQueue: ignore "datagram too large" error (#3328)
conn_helper_freebsd.go sendQueue: ignore "datagram too large" error (#3328)
conn_helper_linux.go sendQueue: ignore "datagram too large" error (#3328)
conn_id_generator.go chore: update gomod
conn_id_generator_test.go chore: update gomod
conn_id_manager.go chore: update gomod
conn_id_manager_test.go chore: update gomod
conn_oob.go chore: update gomod
conn_oob_test.go chore: update gomod
conn_test.go chore: update gomod
conn_windows.go move set DF implementation to separate files & avoid the need for OOBCapablePacketConn (#3334)
conn_windows_test.go run gofmt to add the new go:build tags
crypto_stream.go chore: update gomod
crypto_stream_manager.go chore: update gomod
crypto_stream_manager_test.go chore: update gomod
crypto_stream_test.go chore: update gomod
datagram_queue.go chore: update gomod
datagram_queue_test.go chore: update gomod
errors.go chore: update gomod
frame_sorter.go chore: update gomod
frame_sorter_test.go chore: update gomod
framer.go chore: update gomod
framer_test.go chore: update gomod
go.mod feat: Update chainmaker common to v3 --story=1012289
go.sum feat: Update chainmaker common to v3 --story=1012289
interface.go chore: update gomod
mock_ack_frame_source_test.go chore: update gomod
mock_batch_conn_test.go use batched reads
mock_crypto_data_handler_test.go chore: update gomod
mock_crypto_stream_test.go chore: update gomod
mock_frame_source_test.go chore: update gomod
mock_mtu_discoverer_test.go chore: update gomod
mock_multiplexer_test.go chore: update gomod
mock_packer_test.go chore: update gomod
mock_packet_handler_manager_test.go chore: update gomod
mock_packet_handler_test.go chore: update gomod
mock_packetconn_test.go update gomock to v1.5.0
mock_quic_session_test.go chore: update gomod
mock_receive_stream_internal_test.go chore: update gomod
mock_sealing_manager_test.go chore: update gomod
mock_send_conn_test.go use mockgen source mode
mock_send_stream_internal_test.go chore: update gomod
mock_sender_test.go use mockgen source mode
mock_session_runner_test.go chore: update gomod
mock_stream_getter_test.go chore: update gomod
mock_stream_internal_test.go chore: update gomod
mock_stream_manager_test.go chore: update gomod
mock_stream_sender_test.go chore: update gomod
mock_token_store_test.go chore: update gomod
mock_unknown_packet_handler_test.go use mockgen source mode
mock_unpacker_test.go chore: update gomod
mockgen.go chore: update gomod
mockgen_private.sh chore: update gomod
mtu_discoverer.go chore: update gomod
mtu_discoverer_test.go chore: update gomod
multiplexer.go chore: update gomod
multiplexer_test.go chore: update gomod
packet_handler_map.go chore: update gomod
packet_handler_map_test.go chore: update gomod
packet_packer.go chore: update gomod
packet_packer_test.go chore: update gomod
packet_unpacker.go chore: update gomod
packet_unpacker_test.go chore: update gomod
quic_suite_test.go link to the wiki explaining the UDP receive buffer size
receive_stream.go chore: update gomod
receive_stream_test.go chore: update gomod
retransmission_queue.go
retransmission_queue_test.go
send_conn.go
send_conn_test.go
send_queue.go
send_queue_test.go
send_stream.go
send_stream_test.go
server.go
server_test.go
session.go
session_test.go
stream.go
stream_test.go
streams_map.go

A QUIC implementation in pure Go

PkgGoDev Code Coverage

quic-go is an implementation of the QUIC protocol, RFC 9000 protocol in Go. In addition to RFC 9000, it currently implements the IETF QUIC draft-29. Support for draft-29 will eventually be dropped, as it is phased out of the ecosystem.

Guides

We currently support Go 1.16.x, Go 1.17.x, and Go 1.18.x.

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{},
}

Projects using quic-go

Project Description Stars
algernon Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support GitHub Repo stars
caddy Fast, multi-platform web server with automatic HTTPS GitHub Repo stars
go-ipfs IPFS implementation in go GitHub Repo stars
nextdns NextDNS CLI client (DoH Proxy) GitHub Repo stars
syncthing Open Source Continuous File Synchronization GitHub Repo stars
traefik The Cloud Native Application Proxy GitHub Repo stars
v2ray-core A platform for building proxies to bypass network restrictions GitHub Repo stars
cloudflared A tunneling daemon that proxies traffic from the Cloudflare network to your origins GitHub Repo stars
OONI Probe The Open Observatory of Network Interference (OONI) aims to empower decentralized efforts in documenting Internet censorship around the world. GitHub Repo stars

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.