From 82d645e3cbadcd8358aae00c11987203d2799369 Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Tue, 9 Jul 2019 15:22:48 +0300 Subject: [PATCH] add running with http/3 quic protocol as server listener to examples, rel to: https://github.com/kataras/iris/issues/1295 Former-commit-id: 4c970c8143a663e5b879c8aeb6614504432dfe8d --- _examples/README.md | 1 + _examples/README_ZH.md | 3 ++- .../http-listening/http3-quic/localhost.cert | 18 +++++++++++++ .../http-listening/http3-quic/localhost.key | 27 +++++++++++++++++++ _examples/http-listening/http3-quic/main.go | 26 ++++++++++++++++++ 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 _examples/http-listening/http3-quic/localhost.cert create mode 100644 _examples/http-listening/http3-quic/localhost.key create mode 100644 _examples/http-listening/http3-quic/main.go diff --git a/_examples/README.md b/_examples/README.md index 9f671d85..a5df53b3 100644 --- a/_examples/README.md +++ b/_examples/README.md @@ -87,6 +87,7 @@ Structuring depends on your own needs. We can't tell you how to design your own * [common net.Listener](http-listening/custom-listener/main.go) * [SO_REUSEPORT for unix systems](http-listening/custom-listener/unix-reuseport/main.go) - Custom HTTP Server + * [HTTP/3 Quic](http-listening/http3-quic) **NEW** * [easy way](http-listening/custom-httpserver/easy-way/main.go) * [std way](http-listening/custom-httpserver/std-way/main.go) * [multi server instances](http-listening/custom-httpserver/multi/main.go) diff --git a/_examples/README_ZH.md b/_examples/README_ZH.md index d35d40f6..13724409 100644 --- a/_examples/README_ZH.md +++ b/_examples/README_ZH.md @@ -45,7 +45,8 @@ Iris 是个底层框架, 对 MVC 模式有很好的支持,但不限制文件 - 自定义 TCP 监听器    * [通用 net.Listener](http-listening/custom-listener/main.go) * [unix系统的SO_REUSEPORT](http-listening/custom-listener/unix-reuseport/main.go) -- 自定义 HTTP 服务 +- 自定义 HTTP 服务 + * [HTTP/3 Quic](http-listening/http3-quic) **凊**    * [简单方式](http-listening/custom-httpserver/easy-way/main.go) * [标准方式](http-listening/custom-httpserver/std-way/main.go)    * [多个服务示例](http-listening/custom-httpserver/multi/main.go) diff --git a/_examples/http-listening/http3-quic/localhost.cert b/_examples/http-listening/http3-quic/localhost.cert new file mode 100644 index 00000000..f440f3f1 --- /dev/null +++ b/_examples/http-listening/http3-quic/localhost.cert @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC+zCCAeOgAwIBAgIJAI5gi8BzcdQgMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0xOTA3MDkxMjExNDBaFw0yOTA3MDYxMjExNDBaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAM1eSGwoYznwYtt+/hrv9o4FYxJFlxIMX6WN3c2y3rr8uOwExkz2RuU9SzgF +qn0ctP1DoIKWNO0/L5j5Bjy2do0k8wHYPbTqb9zG64NGZj1lhkHgYXWyCD9U41DX +V1DiJ2JiCRBadowFRRf3/KIPf3xnrCBSCoQwdfIeJJtAF9El2/TnTrGq9N98FJqR +dCNyi+zY/iuymcA3aDOyYNjxSiuV//7ONEql5dxvRlhkjCHgrQ/rIbH/lSFAS+NG +H/6ksEBX2+Q1LlQBaFiGeEnjVpCymrRfADw7bKyqMav39Nndw4UZ1r5MSG20YtXM +dE4lA6VfAKzIZs2n87WF7OO8Y2sCAwEAAaNQME4wHQYDVR0OBBYEFKYItamcYz4Z +NiDy3I2zflU4A7ywMB8GA1UdIwQYMBaAFKYItamcYz4ZNiDy3I2zflU4A7ywMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBACSoSrEArlgPJ1ftlSMkThUR +atTqJ/yB0rSyRxsct0C04qX880VP7avnKc0UhaDruXRjdAVn4X8KI+j6azQSKT40 +KRSVBinnonE0D4DBMCUVDFtkBW3FZJXAYyIYdF/6J3Khn/ksm7VDcVxYI1rjg87B +U6aJytOkoGA2WGQOB1L0HtnTsarg/SKP/LSDUFT+XK6zTE7uogAUrpbwlpIaxc+8 +3jXvgxEdPj9Rq9Nt8/zjCkCGB2EusPPnqxcbqZb5WcGPCIlg3ChKq7vpaQld6KqG +70jT7BZ2fqWSVJ5szRoS8WpKy1SZEx/+AA7VojMzkkw4RLb66zr1v7029b51ol4= +-----END CERTIFICATE----- diff --git a/_examples/http-listening/http3-quic/localhost.key b/_examples/http-listening/http3-quic/localhost.key new file mode 100644 index 00000000..ee1cdae6 --- /dev/null +++ b/_examples/http-listening/http3-quic/localhost.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAzV5IbChjOfBi237+Gu/2jgVjEkWXEgxfpY3dzbLeuvy47ATG +TPZG5T1LOAWqfRy0/UOggpY07T8vmPkGPLZ2jSTzAdg9tOpv3Mbrg0ZmPWWGQeBh +dbIIP1TjUNdXUOInYmIJEFp2jAVFF/f8og9/fGesIFIKhDB18h4km0AX0SXb9OdO +sar033wUmpF0I3KL7Nj+K7KZwDdoM7Jg2PFKK5X//s40SqXl3G9GWGSMIeCtD+sh +sf+VIUBL40Yf/qSwQFfb5DUuVAFoWIZ4SeNWkLKatF8APDtsrKoxq/f02d3DhRnW +vkxIbbRi1cx0TiUDpV8ArMhmzafztYXs47xjawIDAQABAoIBADvaKok7DBAquuT1 +keEP5m9lqoX8uhaMfKOnQOleJAOi+9HtYk2zyN2ui2l8XT+xSh41w2XLmQk7zQds +LCEtnEduaVQ0TWeYm5lgb+sGbW2fVQ2F82F1zWmHt+grmkr8XjYSFEor0zjjoEtn +/rzMf38mR8fzoRT9eqJhnpGQkGBnfo0SyDKIDu9yYFM7yJ5s4KOTVsMGfavjQYgJ +ssQm0KQTo8HbYHieS6drEYFRwAgT8U1NFoVq24yU+Voyy7CR5rjfOsO9gSyStVSH +nTkePmSIcpeQBfpfT3jh+STSS12eqhFCx1SqAUptUehQpOJhnWAyeSGjVLlrHqDR +bCtSWCECgYEA62J2AC8bRQ8omoEOc5h1/kwPTcLYjhOCxwwU8ky7qve173MYZUeT +dxWZx3haahccPyUKtsiGBdKYyYKSOIJMSMmwkG4uy6r5nhwNV+btEIL6Npj+XKMe +PaATA4gBLRQNwcbUlZWLYc0Y6CXFnPA+atEa7EOEBfdgUqHOym1HsAUCgYEA31rU +GPyv8R7Z1UXmxu70M8RwxKS4XhlP7RRg3Zuuqx6WWX4M85Np3wS4UWgQjGKICwoM +D4XKZQOya5p+v7a1RUZt/OD6eJ0TjypW5fBmK2yvBUQkQCsVcFjBL3F+yv2Yk1sh +KlPky4wXpDcmWXGmesgmyhpKIwL+qXEAJEaL0K8CgYABWqKlI6A7iHfKU726ioD7 +QoLABsPqJVCWRoqETk6yEBS62OWmB4Bgqf4leJrEi3d9IYBrRsIGnIyGdDrVGmLH +9GkQm6GnSEeBUlX9UHXCp4467CxiagnNfvM9DPY8xSXDHJqydZbErEJda4I0gelK +AgPuogDLa/3g289tuK015QKBgQDKcj9Qrqiiur3jC8rTgX8i9OjptAvQbsz9LL1n +4FZ/j+fjEdeXZ4RMurB+SP7G4ABDUUYBQ9lhmeo8kfpUtryzH9VNonYkoOs7lrrR +DAbvUUGKWmspJmP2QtxHrm2ofBexaKY1AXmd7Ur4c2x1IggtvgE6qn2MIojE+EGS +n8bWzQKBgQClc/j4GYNNMUYOknxXMH/ec8PBDUtn098YuFL+s7DmRHimtkkjRo1A +BtV7F8KpLruWohxXWy4QZ6HsAO255gIJ8DCbEAFCj96EHNx8KADSm3qbslu2fIB0 +zCsVaETGNAjV/d5hAEdYmgynCY49gNXV55ehV1UqzFoEfZVM9j5hUg== +-----END RSA PRIVATE KEY----- diff --git a/_examples/http-listening/http3-quic/main.go b/_examples/http-listening/http3-quic/main.go new file mode 100644 index 00000000..4c69c887 --- /dev/null +++ b/_examples/http-listening/http3-quic/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "github.com/kataras/iris" + + "github.com/lucas-clemente/quic-go/http3" +) + +/* + $ go get -u github.com/lucas-clemente/quic-go/... +*/ +func main() { + app := iris.New() + + app.Get("/", func(ctx iris.Context) { + ctx.Writef("Hello from Index") + }) + + // app.Configure(iris.WithOptimizations, or any other core config here) + // app.Build() + // http3.ListenAndServe(":443", "./localhost.cert", "./localhost.key", app) + // OR: + app.Run(iris.Raw(func() error { + return http3.ListenAndServe(":443", "./localhost.cert", "./localhost.key", app) + })) +}