#include <WiFi.h>
#include <WebSocketsClient.h>

// Replace with your network credentials
const char* ssid = "WOKWI-GUEST";
const char* password = "";

// WebSocket client
WebSocketsClient webSocket;

// Unique ID for each ESP32 device
String deviceId = "ID1"; // Change this for each device

void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) {
  switch(type) {
    case WStype_DISCONNECTED:
      Serial.println("WebSocket Disconnected");
      break;
    case WStype_CONNECTED:
      Serial.println("WebSocket Connected");
      // Send device ID to server
      webSocket.sendTXT(deviceId);
      break;
    case WStype_TEXT:
      Serial.printf("Received: %s\n", payload);
      // Process the received message
      break;
  }
}

void setup() {
  // Initialize serial communication
  Serial.begin(115200);

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // Connect to WebSocket server
  webSocket.begin("http://192.168.156.243", 3001, "/ws"); // Replace with your server address and port
  webSocket.onEvent(webSocketEvent);
}

void loop() {
  // Keep the WebSocket connection alive
  webSocket.loop();
}