59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
#include <ESPAsyncWebServer.h>
|
|
#include <patrix/core/log.h>
|
|
#include <patrix/core/system.h>
|
|
#include <patrix/node/Node.h>
|
|
|
|
AsyncWebServer server(80);
|
|
|
|
AsyncWebSocket ws("/ws");
|
|
|
|
void httpReboot(AsyncWebServerRequest *request) {
|
|
info("Rebooting...");
|
|
request->redirect("/");
|
|
request->client()->close();
|
|
yield();
|
|
delay(500);
|
|
|
|
restart();
|
|
}
|
|
|
|
void httpSetup() {
|
|
ws.onEvent([](AsyncWebSocket *socket, AsyncWebSocketClient *client, AwsEventType type, void *arg, unsigned char *message, unsigned length) {
|
|
const char *t;
|
|
switch (type) {
|
|
case WS_EVT_CONNECT:
|
|
t = "CONNECT";
|
|
patrixNode.websocketEvent(socket, client, type, arg, message, length);
|
|
break;
|
|
case WS_EVT_DISCONNECT:
|
|
t = "DISCONNECT";
|
|
break;
|
|
case WS_EVT_PONG:
|
|
t = "PONG";
|
|
break;
|
|
case WS_EVT_ERROR:
|
|
t = "ERROR";
|
|
break;
|
|
case WS_EVT_DATA:
|
|
t = "DATA";
|
|
break;
|
|
default:
|
|
t = "[???]";
|
|
break;
|
|
}
|
|
debug("%s: %s (%d bytes)", client->remoteIP().toString().c_str(), t, length);
|
|
});
|
|
server.addHandler(&ws);
|
|
|
|
server.on("/reboot", HTTP_GET, httpReboot);
|
|
server.begin();
|
|
}
|
|
|
|
void httpLoop() {
|
|
ws.cleanupClients();
|
|
}
|
|
|
|
void websocketSendAll(const String& payload) {
|
|
ws.textAll(payload);
|
|
}
|