Arduino, WebSocket.h, сервер поддерживает соединение только с одним пользователем

Пишу сервер на Arduino Uno с использованием WebSocket. Клиентская часть реализована на FastAPI. Проблема заключается в том, что сервер отправляет запросы только одному пользователю. Остальные пользователи игнорируются и дают ошибку:

 websockets.exceptions.InvalidMessage: did not receive a valid HTTP response

Как мне реализовать работу с несколькими пользователями? Заранее спасибо за уделённое время! Код серверной части:

#include <SPI.h>
#include <Ethernet.h>
#include <WebSocket.h>


WebSocketServer wsServer;


byte mac[] = { 0x52, 0x4F, 0x43, 0x4B, 0x45, 0x54 };
byte ip[] = { 192, 168, 1 , 10 }; // Any IP address, according to your network adapter settings. Attention, there must be one subnet with the client!


void onConnect(WebSocket &socket) {
  Serial.println("onConnect called");
}


void onData(WebSocket &socket, char* dataString, byte frameLength) {
  // Just echo back data for fun.
  socket.send(dataString, strlen(dataString));
}


void onDisconnect(WebSocket &socket) {
  Serial.println("onDisconnect called");
}


int get_response_len(int value){
  int len = 0;
  
  for(int j=abs(value); j>0; j/=10){
    len++;
  }

  if(value<0){ // If the number is negative, space is added for the minus
    len++;
  }

  return len;
}


void setup() {
  Ethernet.begin(mac, ip);
  wsServer.registerConnectCallback(&onConnect);
  wsServer.registerDataCallback(&onData);
  wsServer.registerDisconnectCallback(&onDisconnect);  
  wsServer.begin();
  
  delay(10); // Give Ethernet time to get ready
}


void loop() {
  wsServer.listen();

  int value = random(1000); //For example, we will send random integer values.
  
  int response_len = get_response_len(value);
  
  char response[response_len];
  sprintf(response, "%d", value);

  Serial.print("Response: ");
  Serial.println(response);
  Serial.print("Response_len: ");
  Serial.println(response_len);
  Serial.print("Connections: ");
  Serial.println(wsServer.connectionCount());;
  
  if (wsServer.connectionCount() > 0) {
    wsServer.send(response, response_len);
  }
  
  delay(10);
}

Полный код проекта можно посмотреть в моём GitHub: https://github.com/Whynot46/Arduino_Websocket_Server


Ответы (0 шт):