使用Arduino获取WebSocket

使用Arduino获取WebSocket,websocket,get,arduino,http-get,Websocket,Get,Arduino,Http Get,我使用这段代码使用Web Socket get on Arduino从服务器获取字符串 void LedState() { StaticJsonBuffer<200> jsonBuffer; String leddata; if (client.connected()) { { } if (leddata.length() > 0) { Serial.print("Received leddata: "); Ser

我使用这段代码使用Web Socket get on Arduino从服务器获取字符串

void LedState() {

  StaticJsonBuffer<200> jsonBuffer;
  String leddata;

  if (client.connected()) {
    {
    }
    if (leddata.length() > 0) {
      Serial.print("Received leddata: ");
      Serial.println(leddata);
      if (leddata == "True") {
        digitalWrite(LED, HIGH);
        Serial.println("led on");
      }
      if (leddata == "False") {
        digitalWrite(LED, LOW);
        Serial.println("led off");
      }
    }
  }
  if (!client.connected()) {
    Serial.println("disconnected");
    delay(100);
    websocket_connect();       //reconnect with the server 
  }
}
void-LedState(){
静态jsonBuffer jsonBuffer;
字符串数据;
if(client.connected()){
{
}
如果(leddata.length()>0){
串行打印(“收到的数据:”);
串行打印LN(leddata);
如果(leddata==“真”){
数字写入(LED,高电平);
串行打印(led亮起);
}
如果(leddata==“假”){
数字写入(LED,低电平);
序列号。打印号(“led关闭”);
}
}
}
如果(!client.connected()){
Serial.println(“断开”);
延迟(100);
websocket_connect();//重新连接服务器
}
}
问题是,Arduino第一次获得正确的值,并在一段时间内(几秒到几分钟)保持获得该值,即使该值已更改,但有时该值在Arduino上没有更改

void LedState() {

  StaticJsonBuffer<200> jsonBuffer;
  String leddata;

  if (client.connected()) {
    {
    }
    if (leddata.length() > 0) {
      Serial.print("Received leddata: ");
      Serial.println(leddata);
      if (leddata == "True") {
        digitalWrite(LED, HIGH);
        Serial.println("led on");
      }
      if (leddata == "False") {
        digitalWrite(LED, LOW);
        Serial.println("led off");
      }
    }
  }
  if (!client.connected()) {
    Serial.println("disconnected");
    delay(100);
    websocket_connect();       //reconnect with the server 
  }
}

我使用了一个Web套接字测试应用程序来测试问题是出在我的服务器上还是出在Arduino上,我使用Arduino同时运行它,当Arduino停留在最后一个值上时,它得到了正确的值。有时,如果连接丢失,重新连接后,Arduino会获得正确的值。

您必须使用
client.stop()
Serial.println之后(“led亮起”)和后
串行打印(“led关闭”)