HTTP2

2020-02-06 15:44 更新

HTTP2

Fastify 提供了從 Node 8.8.0 開始的對 HTTP2 實驗性支持,Fastify 支持 HTTPS 和普通文本的 HTTP2 支持。需要注意的是,Node 8.8.1 以上的版本才支持 HTTP2。

當前沒有任何 HTTP2 相關的 APIs 是可用的,但 Node req 和 res 可以通過 Request 和 Reply 接口訪問。歡迎相關的 PR。

安全 (HTTPS)

所有的現代瀏覽器都只能通過安全的連接 支持 HTTP2:

'use strict'

const fs = require('fs')
const path = require('path')
const fastify = require('fastify')({
  http2: true,
  https: {
    key: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.key')),
    cert: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.cert'))
  }
})

fastify.get('/', function (request, reply) {
  reply.code(200).send({ hello: 'world' })
})

fastify.listen(3000)

ALPN 協商允許在同一個 socket 上支持 HTTPS 和 HTTP/2。 Node 核心 req 和 res 對象可以是 HTTP/1 或者 HTTP/2。 Fastify 自帶支持開箱即用:

'use strict'

const fs = require('fs')
const path = require('path')
const fastify = require('fastify')({
  http2: true,
  https: {
    allowHTTP1: true, // 向后支持 HTTP1
    key: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.key')),
    cert: fs.readFileSync(path.join(__dirname, '..', 'https', 'fastify.cert'))
  }
})

// 該路由從 HTTPS 與 HTTP2 均可訪問
fastify.get('/', function (request, reply) {
  reply.code(200).send({ hello: 'world' })
})

fastify.listen(3000)

你可以像這樣測試你的新服務器:

$ npx h2url https://localhost:3000

純文本或者不安全

如果你搭建微服務,你可以純文本連接 HTTP2,但是瀏覽器不支持這樣做。

'use strict'

const fastify = require('fastify')({
  http2: true
})

fastify.get('/', function (request, reply) {
  reply.code(200).send({ hello: 'world' })
})

fastify.listen(3000)

你可以像這樣測試你的新服務器:

$ npx h2url http://localhost:3000


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號