WebSocket 实时双向通信
2026-05-09 Saturday
WebSocket协议原理 · ESPAsyncWebServer库 · 双向实时数据推送
概述
HTTP 是"请求-响应"模式,客户端不问服务器就不说。WebSocket 则建立一个持久连接,服务器可以主动推送数据给客户端,实现真正的实时通信。
WebSocket vs HTTP
| 特性 | HTTP | WebSocket |
|---|---|---|
| 连接 | 短连接 | 长连接 |
| 方向 | 客户端发起 | 双向 |
| 开销 | 每次带 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 是构建实时仪表盘、聊天、远程监控等应用的基础。