#include #include #include #include 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); }