Arduino UNO WiFi: RestClient and RestServer

Juraj:
try to reference the WiFiData object, not copy it

void process(WifiData& client) {

Edit: I see that in the example it is not passed as reference.
the UnoWiFiDevEd is strange. I changed the firmware to WiFi Link

Hi Juraj! Thanks for this tip. Will look into this.

I got another concern. Data are sending very slowly. How do I speed up the transmission from Client to Server? Here is my updated and working code while waiting for your reply:

Client Side:

#include <Wire.h>
#include <UnoWiFiDevEd.h>
 
#define CONNECTOR     "rest" 
#define SERVER_ADDR   "192.168.1.102"

String command;
int xaxis, yaxis;
 
void setup() {
  Ciao.begin();
  Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/0");
}
 
void loop() {
  xaxis = map(analogRead(A0), 0, 1000, -1, 1);
  yaxis = map(analogRead(A1), 0, 1000, -1, 1);
  flex = map(analogRead(A2), 0, 1000, -1, 1);
  if (xaxis == -1) {
      Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/1");
  }
  else if (xaxis == 1) {
      Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/2");
  }
  else if (yaxis == -1) {
      Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/3");
  }
  else if (yaxis == 1) {
      Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/4");
  }
  else{
      Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/0");
  }
}

Server Side:

#include <Wire.h>
#include <UnoWiFiDevEd.h>

String command;

void setup(){
    Serial.begin(9600);
    Wifi.begin();
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
}

void loop(){
    while(Wifi.available()){
      process(Wifi);
    }
}

void process(WifiData client) {
  command = client.readStringUntil('/');
  if (command == "mode") {
    modeCommand(client);
    Serial.println(command);
  }
  if (command == "digital") {
    digitalCommand(client);
    Serial.println(command);
  }
  if (command == "analog") {
    analogCommand(client);
    Serial.println(command);
  }
}

void modeCommand(WifiData client) {
  int pin;
  pin = client.parseInt();
  if (client.read() != '/') {
    client.print(EOL);
    Serial.println(command);
  }
  String mode = client.readStringUntil('\r');
  if (mode == "input") {
    pinMode(pin, INPUT);
    client.print(EOL);
    Serial.println(command);
    return;
  }
  if (mode == "output") {
    pinMode(pin, OUTPUT);
    client.print(EOL);
    Serial.println(command);
  }
  client.print(EOL);
  Serial.print(command), Serial.print("\n");
}

void digitalCommand(WifiData client) {
  int value;
  value = client.parseInt();
  if (value == 1){
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, LOW);
  }
  else if (value == 2){
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
  else if (value == 3){
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, HIGH);
  }
  else if (value == 4){
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
  else if (value == 0){
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
  }
  client.print(EOL);
  Serial.println(value);
}

void analogCommand(WifiData client) {
  int pin, value;
  pin = client.parseInt();
  if (client.read() == '/') {
    value = client.parseInt();
    analogWrite(pin, value);
    client.print(EOL);
    Serial.println(command);
  }
  else {
    value = analogRead(pin);
    client.print(EOL);
    Serial.println(command);
  }
}

Apparently, the code works with fixed naming conventions (e.g. /arduino/analog, /arduino/digital, /arduino/mode) must remain as is and these three functions (e.g. analogCommand(), digitalCommand()
and modeCommand()) remain present throughout the code on the Server Side. And, yes; I agree that the current set-up for UnoWifiDevEd is weird.

Hopefully you can help me speed up the transmission! Thanks a lot!