第 9 章 使用 Go 语言实现 HTTP/2、HTML5 的协议
[日] 涩川喜规
本章将使用 Go 语言来实现第 7 章介绍的一部分协议。由于第 8 章介绍的大部分是面向服务器端的功能,以及与 CSS 和视频流技术相关的内容,所以这里省略其实现。
9.1 HTTP/2
Go 语言从 2016 年 2 月发布的版本 1.6 开始对 HTTP/2 提供支持。仅通过设置 HTTPS 通信,表示 HTTP/2 的 h2 就会添加到第 4 章介绍的 NPN/ALPN 协商的候补中。如果客户端和服务器通过协商能够确认对方支持 HTTP/2,就可以使用 HTTP/2 进行通信。
代码清单 9-1 用于与 Google 进行通信,并确认协议版本。
代码清单 9-1 确认 HTTP 协议版本
Go 语言能够通过环境变量来控制是否支持 HTTP/2(表 9-1)。
表 9-1 使用 GODEBUG 环境变量来控制 HTTP/2 的功能
我们加上这些环境变量来运行一下代码。由于最详细的日志(http2debug=2)中的数据量太大,所以这里省略了一部分。该模式可能是为修改 HTTP/2 层的代码的人设计的。从下面的代码中可以看出,应用程序的创建者仅使用简单的环境变量(http2debug=1)就能查看通信记录。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文深入介绍了使用 Go 语言实现 HTTP/2 和 HTML5 协议的相关内容。首先,通过设置 HTTPS 通信并确认对方支持 HTTP/2,即可使用 HTTP/2 进行通信。文章提供了使用环境变量控制 HTTP/2 功能的方法,并给出了相关的示例代码和调试日志。其次,Go 语言从版本 1.8 开始支持的 HTTP/2 服务器推送功能,通过比较 HTTP/1.1 和 HTTP/2 的网络选项卡状态和时间轴详细内容,展示了 HTTP/2 在性能上的优势。此外,文章还介绍了在 Go 语言的 HTTP/2 实现中,使用模拟请求来创建推送的方法。另外,还介绍了 Server-Sent Events 和 WebSocket 的实现方法,为读者提供了全面的技术视角。文章内容丰富,通过具体的代码示例和性能对比,生动地展示了 Go 语言实现 HTTP/2 和 HTML5 协议的技术特点。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《详解 HTTP:协议基础与 Go 语言实现》
《详解 HTTP:协议基础与 Go 语言实现》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论