1 <!doctype html> 2 <html> 3 <head> 4 <title>EventSource Loader Buffering</title> 5 <script> 6 window.onload = function () { 7 setTimeout(test_es, 500); 8 }; 9 10 function test_es() { 11 var len = 0; 12 var count = 0; 13 var step = 1000; 14 var es = new EventSource("eventsource-loader-buffering.php"); 15 es.onopen = function () { 16 log("got 'open' event"); 17 log("waiting for the first " + step + " 'message' events"); 18 }; 19 es.onmessage = function (evt) { 20 len += evt.data.length; 21 if (++count % step) 22 return; 23 log("got " + count + " 'message' events (" + len + " characters)", 1); 24 if (len >= 1e9) 25 end(); 26 }; 27 es.onerror = function () { 28 log("got 'error' event"); 29 end(); 30 }; 31 function end() { 32 if (es.readyState != es.CLOSED) 33 es.close(); 34 log("ENDED"); 35 }; 36 } 37 38 function log(message, updateLast) { 39 if (!log.list) 40 log.list = document.getElementById("log"); 41 var text = document.createTextNode(message); 42 if (updateLast) 43 log.list.lastChild.replaceChild(text, log.list.lastChild.firstChild); 44 else 45 log.list.appendChild(document.createElement("li")).appendChild(text); 46 } 47 </script> 48 </head> 49 <body> 50 <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> 51 <ul id="log" style="list-style-type: none"></ul> 52 </body> 53 </html> 54 55