void streamcontroller::service(HttpRequest &request, HttpResponse &response) { qDebug()<< "Http Server start" <<endl; QByteArray path = request.getPath(); QHostAddress peer = request.getPeerAddress(); if(path == "/data" && request.getMethod() == "GET") { response.setHeader("Content-Type","text/event-stream;charset=utf-8"); response.setHeader("Cache-Control","no-cache"); response.setHeader("Connection","keep-alive"); response.setHeader("Access-Control-Allow-Origin","*"); // also important , if not set , the html application wont run. while(response.isConnected()) { QThread::msleep(500); QJsonDocument tmp; QJsonObject data; data.insert("name","Adward"); data.insert("age",QRandomGenerator::global()->bounded(100)); data.insert("marriage",false); data.insert("Salary",QRandomGenerator::global()->bounded(20000.0)); tmp.setObject(data); QByteArray jsondata = tmp.toJson(QJsonDocument::Compact); response.write("data:" + jsondata + "\n\n"); response.flush(); } qDebug()<< "End Transport"<< endl; } else { response.setStatus(404, "Not found"); response.write("The URL is wrong, no such document",true); } }
<!DOCTYPE html> <html> <body> <h1>Getting server updates</h1> <div id="result"></div> <script> if(typeof(EventSource) !== "undefined") { var source = new EventSource("http://192.168.0.24:8099/data"); source.onmessage = function(event) { document.getElementById("result").innerHTML += event.data + "<br>"; var jsondata = JSON.parse(event.data) console.log(jsondata); }; } else { document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events..."; } </script> </body> </html>