<!doctype html>
<html>
<head>
<title>EventSource Loader Buffering</title>
<script>
window.onload = function () {
setTimeout(test_es, 500);
};
function test_es() {
var len = 0;
var count = 0;
var step = 1000;
var es = new EventSource("eventsource-loader-buffering.php");
es.onopen = function () {
log("got 'open' event");
log("waiting for the first " + step + " 'message' events");
};
es.onmessage = function (evt) {
len += evt.data.length;
if (++count % step)
return;
log("got " + count + " 'message' events (" + len + " characters)", 1);
if (len >= 1e9)
end();
};
es.onerror = function () {
log("got 'error' event");
end();
};
function end() {
if (es.readyState != es.CLOSED)
es.close();
log("ENDED");
};
}
function log(message, updateLast) {
if (!log.list)
log.list = document.getElementById("log");
var text = document.createTextNode(message);
if (updateLast)
log.list.lastChild.replaceChild(text, log.list.lastChild.firstChild);
else
log.list.appendChild(document.createElement("li")).appendChild(text);
}
</script>
</head>
<body>
<p>Manual test to verify that the EventSource loader does not buffer data (may result in memory growth with long lived connections). Monitor memory usage; it should be stable. This file has to be served from the same web server as the php script with the same name.</p>
<ul id="log" style="list-style-type: none"></ul>
</body>
</html>