Gin v1.9.1启用HTTP2协议学习


前言

随着golang版本的升级,新版的gin也进行了升级,下面学习一下如何使用新版gin框架并启用http2属性。

一、Gin v1.9.1新版本特性使用说明

1.查看源码

engine的run方法较之前有所改动,之前传的是engine本身,现在传的是eigine.Handler方法:

func (engine *Engine) RunTLS(addr, certFile, keyFile string) (err error) {
	debugPrint("Listening and serving HTTPS on %s\n", addr)
	defer func() { debugPrintError(err) }()

	if engine.isUnsafeTrustedProxies() {
		debugPrint("[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\n" +
			"Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.")
	}

	err = http.ListenAndServeTLS(addr, certFile, keyFile, engine.Handler())
	return
}

点击engine.Handler方法,发现通过UseH2C参数控制是否启用http2:

func (engine *Engine) Handler() http.Handler {
	if !engine.UseH2C {
		return engine
	}

	h2s := &http2.Server{}
	return h2c.NewHandler(engine, h2s)
}

UseH2C属性默认值为false,及如果不显示设置,则与之前的版本的gin功能一样,使用HTTP1协议。

2.使用方式

设置改属性为true即可:

func main() {
	r := gin.Default()
	r.UseH2C = true
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "pong",
		})
	})
	log.Fatal(r.RunTLS(":443", "cert.pem", "key.pem"))
}

总结

Go 1.20 是一个重要的版本,引入了一些新功能和改进。 改进了对 HTTP/2 的支持,包括更好的流控制和更好的服务器推送。
HTTP/2的原理基于SPDY协议,并进行了改进和优化。HTTP/2使用二进制格式传输数据,而不是文本格式,从而减小了数据的大小和传输时间。它还支持多路复用,将多个HTTP请求和响应打包在同一个TCP连接中,从而减少了网络延迟和通信成本。此外,HTTP/2还引入了头部压缩和优先级处理等功能,进一步提高了网络效率和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空间法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值