diff --git a/src/main.cpp b/src/main.cpp index 2172d63..f367f2c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,9 +4,11 @@ #include "credentials.h" #include "webserver.h" +#include "socketserver.h" #include "util.h" static ESP8266WiFiMulti wifiMulti; +static SocketServer socketServer; void setup() { // serial console, for use via USB (also exposed to TXD0/RXD0 GPIOs) @@ -43,10 +45,12 @@ void setup() { // configure HTTP endpoints configureWebServer(); - // don't forget to start the webserver! + // don't forget to start all the services webServer.begin(); + socketServer.begin(); } void loop() { webServer.handleClient(); + socketServer.handleClient(); } diff --git a/src/socketserver.h b/src/socketserver.h new file mode 100644 index 0000000..2ab39ab --- /dev/null +++ b/src/socketserver.h @@ -0,0 +1,34 @@ +#pragma once + +class SocketServer { +public: + static constexpr int Port = 3000; + + void begin() { + _server.begin(); + } + + void handleClient() { + auto client = _server.available(); + + if (client) { + Serial.println("Client connected to socket server: " + client.remoteIP().toString() + ":" + client.remotePort()); + } else { + return; + } + + while (client.connected()) { + while (client.available() > 0) { + auto chr = client.read(); + Serial.write(chr); + Serial1.write(chr); + } + } + client.stop(); + Serial.println(); + Serial.println("Client disconnected"); + } + +private: + WiFiServer _server{Port}; +};