
llhttp 是解析 Node.js 的 HTTP 1.1 解析器,用于替代早期的使用http_parser,性能上有了非常大的解析提升,最近打算在 No.js 里引入 llhttp 来处理 HTTP 协议的使用解析,本文简单介绍一下如何使用。解析
llhttp 项目是使用 Node.js 中的子项目,地址在:
https://github.com/nodejs/llhttp。解析
使用步骤如下:
1. 安装 npx:npm i npx -g
2. 执行 ts 生成 c 代码:npx ts-node bin/generate.ts,使用或者执行 make generate
3. 这时候build 目录下生成了 llhttp.h 和 llhttp.c,解析再加上 native 下的使用 c 代码,IT技术网就是解析 llhttp 的全部代码,我们可以把他复制到自己的使用项目中使用
下面看看如何使用。llhttp 使用回调钩子的解析设计思想,初始化解析器的使用时候,我们可以设置解析类型,解析是请求或响应报文,然后设置解析状态的回调,比如解析道 URL 时回调,解析到 header 时回调。接着传入报文执行 llhttp_execute 就可以,香港云服务器下面是解析请求报文的例子。
#include <stdio.h> #include <string.h> #include "llhttp.h" #define MAX_LEN 2048 int on_message_begin(llhttp_t* parser){ printf("parse startn"); return 0; } int on_url(llhttp_t* parser, const char* at, size_t length){ char url[MAX_LEN]; strncpy(url, at, length); url[length] =