#include "main.h"
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const uint8_t MAX_CONN = 4;
struct proxy_client {
NetworkClient nc;
bool hs = false;
};
proxy_client clients[MAX_CONN];
#define SERVER_PORT 1080
NetworkServer server(SERVER_PORT);
void setup(){
Serial.begin(115200);
// Connect to Wi-Fi
WiFi.begin(ssid, password, 6);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to Wifi, Starting server.");
server.begin();
Serial.println("Server started.");
}
void add_proxy_client(NetworkClient cl) {
Serial.printf("We have a new client");
for (byte i = 0; i < MAX_CONN; i++) {
if (!clients[i].nc) {
Serial.printf(" %d ",i);
clients[i].nc = cl;
clients[i].hs = false;
if (clients[i].nc.connected())
Serial.printf(" connected\r\n");
else
Serial.printf(" disconnected\r\n");
break;
}
}
}
void del_proxy_client() {
Serial.printf("\r");
for (byte i = 0; i < MAX_CONN; i++) {
if (clients[i].nc && !clients[i].nc.connected()) {
Serial.printf("disconnect client %d\r\n",i);
clients[i].nc.stop();
clients[i].hs = false;
}
}
}
void loop() {
NetworkClient client = server.accept();
if (client) add_proxy_client(client);
del_proxy_client();
}