Professional Documents
Culture Documents
Request
Response
Request
Response
Communication Sequence
of HTTP Request and SSE
Client Server
Request
Event
Event
Event
Event
Event
Practice #1
• Sample under Laravel 5.1
source.addEventListener('message', function(event) {
var date = event.data;
document.getElementById("result").innerHTML += event.data + "<br>";
}, false);
test.monitor.blade.php #2
source.addEventListener('open', function(event) {
// Connection was opened.
}, false);
source.addEventListener('error', function(event) {
if (event.readyState == EventSource.CLOSED) {
// Connection was closed.
}
}, false);
</script>
</head>
<body>
<div id="result">
<!--Server response will be inserted here-->
</div>
</body>
</html>
TestController.php #2
public function update()
{
date_default_timezone_set("Asia/Manila");
header("Content-Type: text/event-stream");
header('X-Accel-Buffering: no');
ob_start();
while(true) {
echo 'data: ' . date('Y-m-d H:i:s') . "\n\n";
ob_flush();
flush();
sleep(5);
}
}
Practice #2
• Sample under Laravel 5.1
source.addEventListener('message', function(event) {
var data = event.data.split("/");
var progress = parseInt(data[0], 10) / parseInt(data[1], 10) * 100;
$("#progress-bar").css("width", progress + "%");
if(data[0] == data[1]) {
$("#progress-bar").removeClass('active');
$("#progress-bar").removeClass('progress-bar-striped');
source.close();
}
}, false);
test.monitor.blade.php #2
source.addEventListener('open', function(event) {
// Connection was opened.
}, false);
source.addEventListener('error', function(event) {
if (event.readyState == EventSource.CLOSED) {
// Connection was closed.
}
}, false);
</script>
</head>
<body class="col-lg-offset-2 col-lg-8">
<div id="text">
Test of SSE
</div>
<div class="progress">
<div id=“progress-bar" class="progress-bar progress-bar-striped active” role=“progressbar”
aria-valuenow=“0" aria-valuemin=“0" aria-valuemax=“100" style="min-width: 0%;"
>
<span id="progress-text" class="sr-only">45% Complete</span>
</div>
</div>
</body>
</html>
TestController.php #2
public function notify()
{
date_default_timezone_set("Asia/Manila");
header("Content-Type: text/event-stream");
header('X-Accel-Buffering: no');
ob_start();
$n = 10;
for($i = 1; $i < $n+1; $i ++) {
echo 'data: ' . $i . '/' . $n . "\n\n";
ob_flush();
flush();
sleep(1);
}
}
What’s the benefit of SSE?
• Less Communication, Packets, and Network Load