使用 Vapor4 创建简单的 http2 服务

Posted SwiftClub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Vapor4 创建简单的 http2 服务相关的知识,希望对你有一定的参考价值。

本文目的:使用 Swift 的 Vapor4 web 框架,了解如何构建一个非常简单的 HTTP/2 后端服务器。

什么是 HTTP/2?

简而言之,它是超文本传输  协议( HTTP[1] )的第二个主要版本,但显然您不适合使用简短版本。HTTP / 2[2]是一个巨大的升级,它是从实验性 SPDY[3] 协议派生而来的,如今它已被所有网站的 40%广泛使用。是的,是时候升级您的基础架构了。

快速说明:默认情况下,HTTP2 是安全的,因此它只能通过 TLS / SSL 起作用,但是为了简单起见,我不再详细介绍 HTTPS,加密或安全连接

HTTP 是一个应用程序层协议,它描述了如何与 URL / URI(或 URN)[4] 标识的各种资源进行交互。HTTP 很简单(一些方法,例如 GET,POST),但可扩展(通过标头),无状态,但不是无会话(仅考虑 Cookie),并且它绝对主导着万维网(浏览器)。

HTTP/1.1 有两个主要的缺点:安全不足和性能不高。它是一种基于文本的未加密协议,而且随着网站的发展以及提供网页所需的越来越多的资源,HTTP/1.1 开始面临一些速度问题,因为在 HTTP / 1.1 的一次连接中只能下载一个资源。

HTTP/2 是现行 HTTP 协议(HTTP/1.x)的替代,但它不是重写,HTTP 方法/状态码/语义都与 HTTP/1.x 一样,HTTP/2 基于 SPDY,专注于性能,最大的一个目标是在用户和网站间只用一个连接(connection)

请求多路复用

HTTP / 2 的最佳(也是最高级的功能)是请求多路复用。它允许您从服务器异步下载多个文件。这使浏览器和其他应用程序可以考虑以类似 Promie 的方式加载资源,而不是老式的阻塞连接。您可以在同一连接上发送所有请求,并且可以并行执行

服务器推送

首先,HTTP/2 服务器推送不是针对应用程序的推送通知系统。您可以使用它将未请求的其他可缓存资源发送到客户端,但是在将来的请求中高度期望它。真实快速的示例:如果客户端请求 index.html 文件,则可以将相应的 sytle.css 和 main.js 文件推回响应中,这样,当客户端实际需要它们时,它们就会存在。

标头压缩,加密,二进制格式等

我可以继续使用 HTTP/2 的好处,但是我相信这里最重要的因素是速度。HTTP/2 占用的网络空间更小,并且消除了一些安全隐患,这对每个人都非常重要。您可以在其他站点上阅读有关该协议的更多信息,但是现在我们就在这里停止。

让我们开始使用 Vapor 4 在 Swift 中创建我们的 HTTP/2 服务器!

以上是关于使用 Vapor4 创建简单的 http2 服务的主要内容,如果未能解决你的问题,请参考以下文章

通知服务端JAVA HTTP2 SDK 1.0.4版本发布

简单比较 http https http2

#yyds干货盘点#netty系列之:手持framecodec神器,创建多路复用http2客户端

需要 ID 属性名称的 Vapor 4 关系和模型

Swoole简单安装与创建TCP服务器

Netty HTTP2 帧转发/代理 - 管道配置问题