我正在构建一个解决方案,其中一个应用程序运行一个 websocket 服务器,许多 esp32s3 设备充当客户端并通过 wifi 连接到该服务器。一般功能是客户端在触发时向应用程序发送消息,应用程序又向连接的客户端之一发送消息,问题是从客户端发送消息到客户端收到下一条消息的时间是很长的方式(300-500ms)。
客户端sw基于托管组件esp_websocket_client。为了隔离问题,我实现了一个非常简单的 websocket 客户端(同样基于 esp_websocket_client)并使用示例 ws_echo_server (esp/esp-idf/examples/protocols/http_server/ws_echo_server/) 对其进行了测试,这导致了类似的糟糕性能。
然后我尝试在我的笔记本电脑上运行一个 python websocket 客户端,并针对在 esp32 上运行的 echo 服务器进行测试,该服务器按预期执行(几乎所有往返时间都低于 100 毫秒),因此它似乎不是硬件限制。
我也尝试过 microPython 客户端和基于 mongoose 框架的客户端,结果都很差。似乎当客户端在 esp32 上运行时性能很差。