You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wemos D1 R32 Arduino IDE下WebSocket客户端连接失败求助

问题分析与解决方案

1. 排查WebSocket库适配与基础配置

  • 优先更换ESP32专属库:Wemos D1 R32基于ESP32核心,部分通用WebSocket库对ESP32网络栈支持存在缺陷,建议改用ESPAsyncWebServer配套的AsyncWebSocket库,或专门针对ESP32优化的WebSocketClient库(注意避开旧版ArduinoWebSocket)。
  • 修正服务器地址格式:客户端配置时不要带http://前缀,直接填写IP或域名(比如192.168.1.100),同时确认WebSocket路径与服务器一致(比如服务器监听/ws,客户端需连接ws://xxx.xxx.xxx.xxx/ws)。
  • 核对端口与协议版本:确保客户端端口与服务器WebSocket监听端口完全匹配,且强制指定握手头的Sec-WebSocket-Version为13(RFC6455标准版本),示例代码:
    client.setExtraHeaders("Sec-WebSocket-Version: 13\r\n");
    

2. 网络层与握手过程验证

  • 抓包确认握手状态:用Wireshark抓取ESP32与服务器的数据包,检查是否发送了带Upgrade: websocket头的HTTP GET请求,以及服务器是否返回101响应。若未收到101,说明握手失败,需排查服务器对ESP32请求头的兼容性。
  • 强化WiFi稳定性:尽管HTTP能连通,但WebSocket对连接稳定性要求更高,添加WiFi重连逻辑避免弱信号导致的频繁断开:
    if (WiFi.status() != WL_CONNECTED) {
      while (WiFi.status() != WL_CONNECTED) {
        WiFi.begin(ssid, password);
        delay(5000);
      }
    }
    
  • 关闭网络拦截:确认ESP32与服务器所在局域网无AP隔离、防火墙或代理拦截WebSocket数据包。

3. 服务器端NanoHTTPD适配调整

  • 升级WebSocket扩展版本:旧版NanoHTTPD WebSocket扩展可能不兼容ESP32的握手格式,更新至最新版本以支持RFC6455标准。
  • 调整超时设置:HTTP响应过慢可能导致WebSocket握手超时,在NanoHTTPD中延长超时时间:
    @Override
    protected int getTimeout() {
      return 60000; // 设置为60秒超时
    }
    
  • 确认路由处理逻辑:确保服务器正确注册WebSocket路径,示例代码:
    @Override
    public WebSocket openWebSocket(IHTTPSession handshake) {
      String path = handshake.getUri();
      if (path.equals("/ws")) { // 与客户端路径保持一致
        return new MyWebSocketHandler(handshake);
      }
      return null;
    }
    

4. 客户端代码调试优化

  • 增加错误日志输出:在onError和onDisconnect回调中打印具体错误信息,定位问题根源:
    void onError(WebSocketClient *client, WebSocketError error) {
      Serial.print("WebSocket错误码: ");
      Serial.println((int)error);
    }
    
    void onDisconnect(WebSocketClient *client) {
      Serial.print("断开原因: ");
      Serial.println(client->getDisconnectReason());
    }
    

内容的提问来源于stack exchange,提问作者Noé Otero Mateo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:05:13