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);
}
}
HTML document code :
<!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>