# titbit-httpc **Repository Path**: daoio/titbit-httpc ## Basic Information - **Project Name**: titbit-httpc - **Description**: titbit的扩展模块,用于http2服务并兼容http1的情况,把请求上下文和运行时转到http1模块中,协议相关属性会根据请求动态设定。 - **Primary Language**: JavaScript - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-11-13 - **Last Updated**: 2023-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # titbit-httpc titbit扩展模块,需要配合titbit使用。 此扩展可用于Web服务端同时兼容HTTP/1.1和HTTP/2协议。 titbit不支持同时兼容两种协议,当然这是可以实现的。通过使用Node.js提供的http2模块的兼容API。 因为兼容的是http和https模块的API,所以在titbit框架下,要使用针对HTTP/1.1协议设计的请求上下文。 同时兼容也要做一些判断处理,也就是在请求初始的一些处理上,要多做一些判断并设定一些属性的值。从测试来看,对性能的影响几乎可以忽略。 ## 注意事项 - 因为http2的服务要基于tls,所以对http1的兼容也需要开启https。 - 选项中的http2不能为true,否则会使用http2的模块。 - 扩展初始化会自动开启http2服务并开启兼容选项。 - 请求上下文和协议版本有关的属性会根据请求的协议动态设定。 - 请尽可能都保持titbit和titbit-httpc最新版。 ## 使用 ``` JavaScript 'use strict' const titbit = require('titbit') const httpc = require('titbit-httpc') //不能开启http2选项,但是必须要设置证书和密钥。 const app = new titbit({ debug: true, cert : './rsa/localhost.cert', key : './rsa/localhost.key' }) let hc = new httpc() hc.init(app) app.get('/', async c => { console.log(c.method, c.path, c.host, c.headers) console.log(c.version, c.major, ' --') c.send('ok') }) app.run(1234) ```