<!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>