Added websocket for debug output

This commit is contained in:
Thomas Basler 2022-12-19 21:03:09 +01:00
parent 8b60c29667
commit 8f5d394f3a
5 changed files with 65 additions and 0 deletions

View File

@ -17,6 +17,7 @@
#include "WebApi_security.h"
#include "WebApi_sysstatus.h"
#include "WebApi_webapp.h"
#include "WebApi_ws_console.h"
#include "WebApi_ws_live.h"
#include <ESPAsyncWebServer.h>
@ -49,6 +50,7 @@ private:
WebApiSecurityClass _webApiSecurity;
WebApiSysstatusClass _webApiSysstatus;
WebApiWebappClass _webApiWebapp;
WebApiWsConsoleClass _webApiWsConsole;
WebApiWsLiveClass _webApiWsLive;
};

View File

@ -0,0 +1,19 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <ESPAsyncWebServer.h>
class WebApiWsConsoleClass {
public:
WebApiWsConsoleClass();
void init(AsyncWebServer* server);
void loop();
private:
void onWebsocketEvent(AsyncWebSocket* server, AsyncWebSocketClient* client, AwsEventType type, void* arg, uint8_t* data, size_t len);
AsyncWebServer* _server;
AsyncWebSocket _ws;
uint32_t _lastWsCleanup = 0;
};

View File

@ -33,6 +33,7 @@ void WebApiClass::init()
_webApiSecurity.init(&_server);
_webApiSysstatus.init(&_server);
_webApiWebapp.init(&_server);
_webApiWsConsole.init(&_server);
_webApiWsLive.init(&_server);
_server.begin();
@ -55,6 +56,7 @@ void WebApiClass::loop()
_webApiSecurity.loop();
_webApiSysstatus.loop();
_webApiWebapp.loop();
_webApiWsConsole.loop();
_webApiWsLive.loop();
}

37
src/WebApi_ws_console.cpp Normal file
View File

@ -0,0 +1,37 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2022 Thomas Basler and others
*/
#include "WebApi_ws_console.h"
#include "Configuration.h"
#include "MessageOutput.h"
#include "WebApi.h"
#include "defaults.h"
WebApiWsConsoleClass::WebApiWsConsoleClass()
: _ws("/console")
{
}
void WebApiWsConsoleClass::init(AsyncWebServer* server)
{
_server = server;
_server->addHandler(&_ws);
MessageOutput.register_ws_output(&_ws);
}
void WebApiWsConsoleClass::loop()
{
// see: https://github.com/me-no-dev/ESPAsyncWebServer#limiting-the-number-of-web-socket-clients
if (millis() - _lastWsCleanup > 1000) {
_ws.cleanupClients();
if (Configuration.get().Security_AllowReadonly) {
_ws.setAuthentication("", "");
} else {
_ws.setAuthentication(AUTH_USERNAME, Configuration.get().Security_Password);
}
_lastWsCleanup = millis();
}
}

View File

@ -48,6 +48,11 @@ export default defineConfig({
target: 'ws://192.168.20.110/',
ws: true,
changeOrigin: true
},
'^/console': {
target: 'ws://192.168.20.110/',
ws: true,
changeOrigin: true
}
}
}