You need to enable JavaScript to run this app. 同一ESP32上如何同时运行ESPAsyncWebServer与ESP32WebServer两个服务
优惠活动
大模型
产品
解决方案
定价
更多

同一ESP32上如何同时运行ESPAsyncWebServer与ESP32WebServer两个服务

问题解决方案

核心问题根源是同一个网络端口同一时间只能被一个服务监听占用,你两个Web服务都绑定80端口,天然就会出现互斥,只有先启动的能抢到端口使用权。

以下是两种可落地的解决方式:

方案1:修改其中一个服务的监听端口(改动最小,可同时运行两个服务)

  • 把两个服务的端口改成不同值即可,比如原有AsyncWebServer继续用80端口,摄像头用的ESP32WebServer改成81端口,初始化代码修改为:
    ESP32WebServer server2(81);
  • 访问时加端口区分即可:传感器页面访问地址是http://<ESP32的IP地址>,摄像头页面访问地址是http://<ESP32的IP地址>:81
  • 该方案不需要修改原有业务逻辑,两个服务可以同时正常运行,不需要做启停切换。

方案2:统一使用AsyncWebServer实现所有功能(性能更优,无服务冲突)

你完全不需要同时引入两个WebServer库,AsyncWebServer本身就支持摄像头数据流输出,完全可以替代ESP32WebServer实现摄像头功能:

  • 不需要再初始化第二个server,所有请求路由都在原有AsyncWebServer server(80)实例上配置即可
  • 异步架构的AsyncWebServer处理摄像头JPEG流/视频流的性能比同步的ESP32WebServer更好,不会阻塞传感器数据的请求响应,稳定性更高。

关于启停服务失败的说明

ESP32WebServer库本身确实没有实现end()方法,所以你无法通过先关闭原有服务再启动新服务的方式实现功能切换,就算对应库支持该操作,切换逻辑也会导致两个功能无法同时使用,用户访问需要等待服务切换,使用体验很差,不推荐走这个方向。

内容的提问来源于stack exchange,提问作者ebm9991

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 13:45:02