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