The code I use:
//XMLHTTP.open using GET seems 2x faster than POST
//xmlhttp.open('POST','/Refresh',true); 5fps
//xmlhttp.open('GET','/Refresh',true); 11fps
//xmlhttp.open('GET','/Refresh',false); (without handler) 10 fps
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "....";
const char* password = "....";
ESP8266WebServer server(80);
const char html[] PROGMEM =
"<html><head>\n"
"<meta name='viewport' content='width=device-width, initial-scale=1' />\n"
"<meta http-equiv='Cache-Control' content='no-cache, no-store, must-revalidate' />\n"
"<meta http-equiv='Pragma' content='no-cache' />\n"
"<meta http-equiv='Expires' content='0' />\n"
"<script src='script.js'></script>\n"
"</head>\n"
"<body>\n<h1 style='font-family:Lucida Console;font-size:32px'>Data request per second</h1>\n"
"<div id='fps' style='background-color:#FFFFAA;border:1px solid black;width:42px;height:24px;text-align:center;line-height:22px;font-size:12px;'>10 fps</div>"
"</body></html>\n";
const char js[] PROGMEM =
"var interval;\n"
"var xmlhttp=new XMLHttpRequest();\n"
"document.addEventListener('DOMContentLoaded',init,false);\n"
"var fC=0;\n"
"setInterval(updateFPS,1000);\n"
"function updateFPS(){\n"
" var fT = document.getElementById('fps');\n"
" fT.innerHTML=fC+ ' fps';\n"
" fC=0;"
"}\n"
"function init(){\n"
" refresh();\n"
"}\n"
"function refresh( ){\n"
" xmlhttp.onreadystatechange=function(){\n"
" if (xmlhttp.readyState==4 && xmlhttp.status==200){\n"
" fC++;\n"
" setTimeout(refresh,0);\n"
" }\n" //if
" }\n" //onreadystatechange
" xmlhttp.open('GET','/Refresh',true);\n"
" xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');\n"
" xmlhttp.send();\n"
"}\n"
;
void handleNotFound(){
String message = "File Not Found: ";
server.send(404, "text/plain", message);
message += "'"+server.uri()+"'";
Serial.println(message);
}
char msg[4]={'T','E','S','T'};
void Refresh(){
wdt_disable();
server.send(200, "text/plain", msg);
wdt_enable(5000);
}
void setup () {
delay(1000);
Serial.begin (115200);
Serial.println("Setup Start");
}
unsigned long cycles=0;
void initWifi(){
// Start Wifi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print(" ip-address: ");
Serial.println(WiFi.localIP());
}
void initServer(){
// set comm. pages
server.on ( "/",[]() {
Serial.println("Root page called");
server.send_P ( 200, "text/html", html);
});
server.on ( "/script.js",[]() {
Serial.println("Javascript loaded");
server.send_P ( 200, "text/plain", js);
});
server.on ( "/Refresh", Refresh);
server.onNotFound(handleNotFound);
// Start the server
server.begin();
}
int fase=0;
void loop () {
if (fase!=2) {Serial.print ("Start boot fase ");Serial.println(fase);}
if (fase==0) {initWifi();}
if (fase==1) {initServer();}
if (fase!=2) {Serial.print ("..finished boot fase ");Serial.println(fase);}
if (fase!=2) {fase++;return;}
server.handleClient();
}