Added websocket for debug output
This commit is contained in:
parent
8b60c29667
commit
8f5d394f3a
@ -17,6 +17,7 @@
|
|||||||
#include "WebApi_security.h"
|
#include "WebApi_security.h"
|
||||||
#include "WebApi_sysstatus.h"
|
#include "WebApi_sysstatus.h"
|
||||||
#include "WebApi_webapp.h"
|
#include "WebApi_webapp.h"
|
||||||
|
#include "WebApi_ws_console.h"
|
||||||
#include "WebApi_ws_live.h"
|
#include "WebApi_ws_live.h"
|
||||||
#include <ESPAsyncWebServer.h>
|
#include <ESPAsyncWebServer.h>
|
||||||
|
|
||||||
@ -49,6 +50,7 @@ private:
|
|||||||
WebApiSecurityClass _webApiSecurity;
|
WebApiSecurityClass _webApiSecurity;
|
||||||
WebApiSysstatusClass _webApiSysstatus;
|
WebApiSysstatusClass _webApiSysstatus;
|
||||||
WebApiWebappClass _webApiWebapp;
|
WebApiWebappClass _webApiWebapp;
|
||||||
|
WebApiWsConsoleClass _webApiWsConsole;
|
||||||
WebApiWsLiveClass _webApiWsLive;
|
WebApiWsLiveClass _webApiWsLive;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
19
include/WebApi_ws_console.h
Normal file
19
include/WebApi_ws_console.h
Normal 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;
|
||||||
|
};
|
||||||
@ -33,6 +33,7 @@ void WebApiClass::init()
|
|||||||
_webApiSecurity.init(&_server);
|
_webApiSecurity.init(&_server);
|
||||||
_webApiSysstatus.init(&_server);
|
_webApiSysstatus.init(&_server);
|
||||||
_webApiWebapp.init(&_server);
|
_webApiWebapp.init(&_server);
|
||||||
|
_webApiWsConsole.init(&_server);
|
||||||
_webApiWsLive.init(&_server);
|
_webApiWsLive.init(&_server);
|
||||||
|
|
||||||
_server.begin();
|
_server.begin();
|
||||||
@ -55,6 +56,7 @@ void WebApiClass::loop()
|
|||||||
_webApiSecurity.loop();
|
_webApiSecurity.loop();
|
||||||
_webApiSysstatus.loop();
|
_webApiSysstatus.loop();
|
||||||
_webApiWebapp.loop();
|
_webApiWebapp.loop();
|
||||||
|
_webApiWsConsole.loop();
|
||||||
_webApiWsLive.loop();
|
_webApiWsLive.loop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
37
src/WebApi_ws_console.cpp
Normal file
37
src/WebApi_ws_console.cpp
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -48,6 +48,11 @@ export default defineConfig({
|
|||||||
target: 'ws://192.168.20.110/',
|
target: 'ws://192.168.20.110/',
|
||||||
ws: true,
|
ws: true,
|
||||||
changeOrigin: true
|
changeOrigin: true
|
||||||
|
},
|
||||||
|
'^/console': {
|
||||||
|
target: 'ws://192.168.20.110/',
|
||||||
|
ws: true,
|
||||||
|
changeOrigin: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user