http服务端 mongoose常用api

我给你整理一份最常用、必须掌握的 Mongoose API 清单 ,全部结合你的 HTTP 服务端代码 来讲,一看就懂、直接能用

基于 Mongoose 服务端开发 ------ 核心 API 大全

1. 初始化管理器

cpp 复制代码
mg_mgr_init(&mgr_, nullptr);

作用:初始化 Mongoose 管理器,管理所有连接、事件。


2. 绑定端口 + 监听

cpp 复制代码
mg_bind(&mgr_, "0.0.0.0:8080", OnHttpWebsocketEvent);

作用:

  • 绑定 IP + 端口
  • 设置事件回调函数(收到请求、连接、断开都会走这里)

3. 设置 HTTP 协议

cpp 复制代码
mg_set_protocol_http_websocket(connection);

作用:让连接支持 HTTP + WebSocket 协议。


4. 事件轮询(必须调用!)

cpp 复制代码
mg_mgr_poll(&mgr_, 500);

作用:

  • 处理所有网络事件
  • 接收请求、发送数据、断开连接
  • 服务器主循环一定要写!

5. 释放管理器

cpp 复制代码
mg_mgr_free(&mgr_);

作用:关闭服务器,释放资源。


二、事件回调里常用的 API

6. 收到 HTTP 请求事件

cpp 复制代码
case MG_EV_HTTP_REQUEST:

作用:客户端发来 HTTP 请求时触发。


7. 解析 HTTP 请求

cpp 复制代码
http_message* req = (http_message*)event_data;

// 获取 URL
string url = string(req->uri.p, req->uri.len);

// 获取 Body
string body = string(req->body.p, req->body.len);

// 获取 Method
string method = string(req->method.p, req->method.len);

作用:解析客户端发来的 URL、请求体、请求方法(POST/GET)


8. 发送 HTTP 响应头

cpp 复制代码
mg_send_response_line(nc, 200, headers.c_str());

作用:发送 HTTP 状态行 + 响应头

例如:HTTP/1.1 200 OK


9. 分块发送数据(chunked)

cpp 复制代码
mg_send_http_chunk(nc, data.data(), data.size());

作用:发送响应体


10. 发送结束标记

cpp 复制代码
mg_send_http_chunk(nc, "", 0);

作用:告诉客户端数据发送完毕。


11. 广播事件(线程池完成后回传)

cpp 复制代码
mg_broadcast(&mgr_, on_work_complete, &result, sizeof(result));

作用:跨线程通知 Mongoose 发送数据。


12. 发送错误页面

cpp 复制代码
mg_http_send_error(nc, 404, "Not Found");

三、你的代码中用到的 Mongoose API 清单(对照看)

cpp 复制代码
mg_mgr_init
mg_bind
mg_set_protocol_http_websocket
mg_mgr_poll
mg_mgr_free

mg_send_response_line
mg_send_http_chunk
mg_http_send_error
mg_broadcast

这些就是写 HTTP 服务端 95% 会用到的 API!


四、我给你一个最简单的 Mongoose 服务端示例(5 行核心)

cpp 复制代码
void fn(struct mg_connection* c, int ev, void* d) {
    if (ev == MG_EV_HTTP_REQUEST) {
        mg_send_response_line(c, 200, "Content-Type: text/plain\r\n");
        mg_send_http_chunk(c, "hello world", 11);
        mg_send_http_chunk(c, "", 0);
    }
}

int main() {
    struct mg_mgr mgr;
    mg_mgr_init(&mgr, 0);
    mg_bind(&mgr, "8080", fn);
    while(1) mg_mgr_poll(&mgr, 1000);
}

终极总结(你只需要记住)

Mongoose 做的事:

  • 监听端口
  • 接收请求
  • 解析 HTTP
  • 发送响应
  • 管理连接

你的框架做的事:

  • 线程池
  • 路由匹配
  • 会话管理
  • 业务逻辑

需要我给你整理一份 Mongoose 事件类型大全 吗?比如:

  • MG_EV_ACCEPT
  • MG_EV_HTTP_REQUEST
  • MG_EV_CLOSE
  • MG_EV_SEND

这些你代码里都用到了!

相关推荐
吠品42 分钟前
SQL Server 版本查询的几种实用方法
数据库·网络协议·ssl
Shadow(⊙o⊙)1 小时前
CMake实战Http+编译、链接选项的使用
网络·网络协议·http
十正1 小时前
用 HTTP 条件请求把“强一致“和“低成本
网络·后端·http
Canicer1 小时前
从零部署 FunASR 语音识别服务
人工智能·语音识别·xcode
Fxkj8881 小时前
传统企业布局新媒体:自行摸索与IP陪跑模式深度对比
人工智能·网络协议·tcp/ip·媒体
demon75520031 小时前
IDEA-http-client-指南
http·intellij-idea
可乐鸡翅yeah_2 小时前
HTTPS 站点下 M3U8 混合内容问题深度排查,HLS 协议安全策略踩坑实录
数据库·网络协议·https·m3u8·m3u8在线
rockingdingo13 小时前
Codex Claude 智能体做3D/潮玩/IP设计——装上Craftsman Agent工匠智能体Skills 游泳男孩IP案例分享
网络协议·tcp/ip·3d
泡海椒13 小时前
告别手写 HTTP 模板!JQuick-Curl:直接把 curl 命令跑在 Java 中
java·网络协议·http
AI备忘录15 小时前
(十六)GRE/IPSec 隧道配置命令五厂商对照:华为 华三 锐捷 迈普 思科
运维·服务器·网络·网络协议·网络安全·华为