mirror of
https://github.com/me-no-dev/ESPAsyncWebServer.git
synced 2025-10-01 08:40:54 +02:00
Add sample
This commit is contained in:
76
examples/Issue162/Issue162.ino
Normal file
76
examples/Issue162/Issue162.ino
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* Connect to AP and run in bash:
|
||||||
|
*
|
||||||
|
* > while true; do echo "PING"; sleep 0.1; done | websocat ws://192.168.4.1/ws
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <Arduino.h>
|
||||||
|
#ifdef ESP8266
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#endif
|
||||||
|
#ifdef ESP32
|
||||||
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
#include <ESPAsyncWebServer.h>
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
AsyncWebServer server(80);
|
||||||
|
AsyncWebSocket ws("/ws");
|
||||||
|
|
||||||
|
void onWsEvent(AsyncWebSocket* server, AsyncWebSocketClient* client, AwsEventType type, void* arg, uint8_t* data, size_t len) {
|
||||||
|
if (type == WS_EVT_CONNECT) {
|
||||||
|
Serial.printf("Client #%" PRIu32 " connected.\n", client->id());
|
||||||
|
} else if (type == WS_EVT_DISCONNECT) {
|
||||||
|
Serial.printf("Client #%" PRIu32 " disconnected.\n", client->id());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
WiFi.mode(WIFI_AP);
|
||||||
|
WiFi.softAP("esp-captive");
|
||||||
|
|
||||||
|
ws.onEvent(onWsEvent);
|
||||||
|
server.addHandler(&ws);
|
||||||
|
|
||||||
|
server.on("/close_all_ws_clients", HTTP_GET | HTTP_POST, [](AsyncWebServerRequest* request) {
|
||||||
|
Serial.println("Closing all WebSocket clients...");
|
||||||
|
ws.closeAll();
|
||||||
|
request->send(200, "application/json", "{\"status\":\"all clients closed\"}");
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||||
|
request->send(200, "text/html", R"rawliteral(
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head></head>
|
||||||
|
<script>
|
||||||
|
let ws = new WebSocket("ws://" + window.location.host + "/ws");
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
ws.onopen = function () {
|
||||||
|
console.log("WebSocket connected");
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
function closeAllWsClients() {
|
||||||
|
fetch("/close_all_ws_clients", {
|
||||||
|
method : "POST",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<body>
|
||||||
|
<button onclick = "closeAllWsClients()" style = "width: 200px"> ws close all</button><p></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
)rawliteral");
|
||||||
|
});
|
||||||
|
|
||||||
|
server.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
@@ -1,11 +1,12 @@
|
|||||||
[platformio]
|
[platformio]
|
||||||
default_envs = arduino-2, arduino-3, arduino-310, esp8266, raspberrypi
|
default_envs = arduino-2, arduino-3, arduino-310, esp8266, raspberrypi
|
||||||
lib_dir = .
|
lib_dir = .
|
||||||
src_dir = examples/CaptivePortal
|
; src_dir = examples/CaptivePortal
|
||||||
; src_dir = examples/SimpleServer
|
; src_dir = examples/SimpleServer
|
||||||
; src_dir = examples/StreamFiles
|
; src_dir = examples/StreamFiles
|
||||||
; src_dir = examples/Filters
|
; src_dir = examples/Filters
|
||||||
; src_dir = examples/Issue85
|
; src_dir = examples/Issue85
|
||||||
|
src_dir = examples/Issue162
|
||||||
|
|
||||||
[env]
|
[env]
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
Reference in New Issue
Block a user