搜索结果

×

搜索结果将在这里显示。

💻PicoServer.Nano 文档

PicoServer.Nano 是 PicoServer 的 .NET nanoFramework 移植版本,让你在 ESP32、STM32 等微控制器上用 C# 运行轻量级 Web 服务。一套 API ,让桌面端、云端、嵌入式 Linux 、微控制器拥有一致的开发体验。


🎯 特性

  • 轻量:代码量小,资源占用少
  • 简单:一行代码添加路由
  • 中间件支持:自定义拦截逻辑
  • 静态文件托管:支持 CSS/JS/HTML 等
  • SSE 长连接:WriteChunk 方法实现实时推送
  • 文件上传/下载:流式处理,内存友好
  • Token 认证:简单 Token 验证

📦 安装

1. 烧录 nanoFramework 固件

nanoff --target ESP32_S3_ALL --serialport COMx --update --masserase

2. 添加 NuGet

dotnet add package PicoServer.Nano

🚀 快速开始

using PicoServer.Nano;
using System.Net;

var server = new WebAPIServer();

// 添加路由
server.AddRoute("/hello", HelloHandler, "GET");

// 启动服务
server.StartServer(80);
Console.WriteLine($"服务器已启动: http://{server.GetIPAddress()}/");

static void HelloHandler(HttpListenerRequest req, HttpListenerResponse res)
{
    res.Write("Hello PicoServer!");
}

📚 API 参考

路由注册

// 精准路由
server.AddRoute("/api/user", UserHandler, "GET");

// 处理器签名
private static void UserHandler(HttpListenerRequest req, HttpListenerResponse res)
{
    string token = req.GetToken();
    res.Write("{\"id\":1}");
}

中间件

// 添加中间件(返回 true 继续,false 拦截)
server.AddMiddleware((req, res) =>
{
    if (req.Headers["X-Key"] != "secret")
    {
        res.Write("Unauthorized", 401);
        return false;
    }
    return true;
});

内置中间件

// Token 认证
server.AddSimpleTokenVerify("your-token");

// 静态文件托管
server.AddStaticFiles("/web", "I:\\www", maxAge: 3600);

// 白名单(跳过认证)
server.RouteWhiteList.Add("/web");

响应扩展

方法 说明
res.Write(content, contentType) 写入响应并关闭
res.SendFile(filePath) 发送文件(流式)
res.WriteChunk(content) 分块推送(SSE/长连接)

请求扩展

方法 说明
req.GetToken() 获取 Authorization 头中的 Token
req.ReadBodyAsString() 读取请求体为字符串
req.SaveFile(savePath) 保存上传文件

工具方法

// 获取设备 IP
string ip = server.GetIPAddress();

// 获取时间戳
long ts = server.GetTimeStamp10(3600);

// 获取 MIME 类型
string ct = WebAPIExt.GetContentType(".html");
// 返回 "text/html;charset=UTF-8"

📊 性能数据

测试平台:ESP32-S3 N16R8 局域网 WIFI

# 6 并发短时压力测试命令
hey -n 50 -c 6 http://192.168.2.67
配置 稳定并发 QPS 平均延迟 成功率
无 PSRAM 6 ~8 ~220 ms 100%
有 PSRAM 6 ~26 ~210 ms 100%

在 ESP32-S3 上实测:启用 PSRAM 时 QPS 约 26,不启用时约 8,均稳定 6 并发,成功率 100%。STM32 预计性能更高。提高并发虽然可行,但受底层网络协议栈(lwIP)限制,过高并发容易导致丢包。


⚠️ 注意事项

  1. 路径格式:使用反斜杠 \,如 "I:\\www"
  2. 静态文件:文件需部署到设备(生成操作设为"内容")
  3. 白名单:静态文件路由需加入白名单跳过认证
  4. 长连接WriteChunk 推送结束后必须调用 res.Close()

📖 更多资源

发布时间: