6주차_참고 : WebServer 객체 - dhryu60/SmartDevice_2025-1 GitHub Wiki
WebServer server(80); // 80번 포트에서 웹서버를 실행
-
WebServer
는 ESP32 내부에서 HTTP 웹서버를 동작하게 하는 클래스입니다. -
WiFiClient
와WiFiServer
를 기반으로 작동합니다. - ESP32에 웹 브라우저가 접속하면 요청을 받아 응답할 수 있게 해줍니다.
-
객체 생성:
WebServer server(80);
→ 80번 포트에서 웹서버를 구동할 준비를 합니다. -
라우팅 설정:
server.on("/", handleRoot);
→ 특정 경로(예:/
)로 요청이 들어오면handleRoot()
함수로 응답합니다. -
서버 시작:
server.begin();
→ 실제로 클라이언트 요청을 받기 시작 -
요청 처리:
server.handleClient();
→ 클라이언트가 요청을 보냈을 때 그 요청을 분석하고 대응
함수명 | 설명 |
---|---|
WebServer(port) |
지정한 포트로 서버 객체 생성 (80 , 8080 등 가능) |
begin() |
서버 시작 (이후부터 클라이언트 요청 수신 가능) |
on(path, handler) |
특정 경로 요청 시 호출할 함수 지정 |
send(code, type, content) |
응답을 보냄 (HTTP 상태코드 , MIME 타입 , 내용 ) |
handleClient() |
클라이언트 요청을 감지하고 처리 |
hasArg(name) |
클라이언트 요청에 특정 파라미터가 포함됐는지 확인 |
arg(name) |
특정 파라미터 값을 가져옴 |
sendHeader(key, value) |
응답에 HTTP 헤더 추가 |
streamFile(file, type) |
SPIFFS나 SD카드의 파일을 스트리밍 형태로 전송 |
#include <WiFi.h>
#include <WebServer.h>
WebServer server(80); // 포트 80으로 서버 객체 생성
void handleRoot() {
server.send(200, "text/html", "<h1>Hello from ESP32!</h1>");
}
void setup() {
WiFi.begin("SSID", "PASSWORD");
while (WiFi.status() != WL_CONNECTED) delay(1000);
server.on("/", handleRoot); // 루트 페이지 처리
server.begin(); // 서버 시작
}
void loop() {
server.handleClient(); // 요청 처리
}
server.on("/status", []() {
if (server.hasArg("device")) {
String dev = server.arg("device");
server.send(200, "text/plain", "Device: " + dev);
} else {
server.send(400, "text/plain", "Missing 'device' argument");
}
});
server.on("/json", []() {
server.send(200, "application/json", "{\"temp\": 24.5, \"hum\": 58}");
});
-
반드시
server.begin()
호출 후loop()
에서server.handleClient()
를 반복적으로 호출해야 요청이 처리됩니다. -
server.on()
은 setup()에서 설정해야 제대로 동작합니다. - 여러 경로(
/
,/status
,/led/on
등)를 다르게 처리할 수 있음 → 웹 기반 대시보드 구현 가능
항목 | WebServer | ESPAsyncWebServer |
---|---|---|
방식 | 동기적 (handleClient 반복 호출 필요) | 비동기적 (이벤트 기반, 성능 높음) |
복잡도 | 간단함 (초보자에 적합) | 약간 복잡 (고성능 IoT에 적합) |
사용 예시 | 간단한 센서 웹서버, 제어 UI | 실시간 대시보드, AJAX 기반 서비스 |
-
WebServer
객체는 ESP32의 HTTP 웹서버 엔진이다. - 브라우저 요청을 받아서 응답해주는 기본적인 역할을 수행한다.
-
on()
,send()
,handleClient()
등 함수를 통해 다양한 기능을 구현할 수 있다. - 기본 동작은 매우 직관적이며, 소규모 IoT 프로젝트에 최적!