title: Arduino html auto-refresh for constant data stream
body: <p>We're trying to have the web page served by the Arduino update without having to refresh the page. Our current code is below. Right now the page is refreshing as fast as possible (about once a second), but we'd like to have the data update without having to refresh. Is there a way to do this with html?</p>
  
  <p>Thanks for your help!</p>
  
  <pre><code>void loop() {
    WiFiClient client = server.available();   // listen for incoming clients
  
    if (client) {                             // if you get a client,
    Serial.println("new client");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the     client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character
  
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
  
            client.println();
  
            voltageReading = analogRead(A0);
  
            //meta-refresh page as fast as possible
            client.print("&lt;HEAD&gt;");
            client.print("&lt;meta http-equiv=\"refresh\" content=\"0\"&gt;");
            client.print("&lt;TITLE /&gt;Smart 3 Phase Relay TCNJ&lt;/title&gt;");
            client.print("&lt;/head&gt;");
            // the content of the HTTP response follows the header:
            client.print("Voltage Reading: ");
            client.print(voltageReading);
  
            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          }
            else {      // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        }
        else if (c != '\r') {    // if you got anything else but a carriage return character,
        currentLine += c;      // add it to the end of the currentLine
      }
  
      // Check to see if the client request was "GET /H" or "GET /L":
      if (currentLine.endsWith("GET /H")) {
        digitalWrite(9, HIGH);               // GET /H turns the LED on
      }
      if (currentLine.endsWith("GET /L")) {
        digitalWrite(9, LOW);                // GET /L turns the LED off
      }
    }
  }
  // close the connection:
  client.stop();
  Serial.println("client disonnected");
  }
  }
  </code></pre>