WebSocket 实时双向通信

2026-05-09 Saturday

WebSocket协议原理 · ESPAsyncWebServer库 · 双向实时数据推送

概述

HTTP 是"请求-响应"模式,客户端不问服务器就不说。WebSocket 则建立一个持久连接,服务器可以主动推送数据给客户端,实现真正的实时通信。

WebSocket vs HTTP

特性HTTPWebSocket
连接短连接长连接
方向客户端发起双向
开销每次带 Header帧头仅 2-14 字节
实时性轮询延迟毫秒级推送

实战:数据推送

#include <WiFi.h>
#include <ESPAsyncWebServer.h>

AsyncWebServer server(80);
AsyncWebSocket ws("/ws");

void setup() {
  WiFi.begin(ssid, password);
  ws.onEvent([](AsyncWebSocket *s, AsyncWebSocketClient *c, 
               AwsEventType t, void *arg, uint8_t *data, size_t len) {
    if (t == WS_EVT_CONNECT) {
      c->text("Hello from ESP32!");
    }
  });
  server.addHandler(&ws);
  server.begin();
}

物料清单

元件数量
ESP32 开发板x1
电位器x1
面包板+杜邦线若干

WebSocket 是构建实时仪表盘、聊天、远程监控等应用的基础。