Code examples for presentation server-sent events
Run via nginx
<!DOCTYPE html> | |
<html> | |
<head lang="en"> | |
<meta charset="UTF-8"> | |
<title>Server-Sent events</title> | |
</head> | |
<body> | |
<script type="text/javascript"> | |
function retryEventSource() { | |
var source = new EventSource("/stream.php"); | |
source.addEventListener('message', function (e) { | |
document.body.innerHTML += e.data + '<br/>'; | |
console.log('message', e, source.readyState) | |
}, false); | |
source.addEventListener('open', function(e) { | |
document.body.innerHTML += '<b>OPEN</b><br/>'; | |
console.log('open', e, source.readyState) | |
}, false); | |
source.addEventListener('error', function(e) { | |
console.log('error', e, source.readyState) | |
if (source.readyState == EventSource.CONNECTING) { | |
document.body.innerHTML += '<b>RECONNECTING</b><br/>'; | |
} else { | |
document.body.innerHTML += '<b>ERROR</b><br/>'; | |
source.close(); | |
retryEventSource(); | |
} | |
}, false); | |
} | |
retryEventSource(); | |
</script> | |
Welcome to<br/> | |
</body> | |
</html> |
server { | |
listen 80; | |
server_name php-test.local; | |
index index.php index.html; | |
root /releases/php_test/data; | |
location ~ \.php$ { | |
try_files $uri =404; | |
fastcgi_split_path_info ^(.+\.php)(/.+)$; | |
fastcgi_pass php_test:9000; | |
fastcgi_index index.php; | |
include fastcgi_params; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
fastcgi_param PATH_INFO $fastcgi_path_info; | |
fastcgi_buffering off; | |
fastcgi_cache off; | |
fastcgi_read_timeout 4; | |
} | |
} | |
server { | |
listen 443 ssl http2; | |
server_name php-test.local; | |
ssl_certificate "/etc/letsencrypt/live/php-test.local/fullchain.pem"; | |
ssl_certificate_key "/etc/letsencrypt/live/php-test.local/privkey.pem"; | |
ssl_buffer_size 1; | |
index index.php index.html; | |
root /releases/php_test/data; | |
location ~ \.php$ { | |
try_files $uri =404; | |
fastcgi_split_path_info ^(.+\.php)(/.+)$; | |
fastcgi_pass php_test:9000; | |
fastcgi_index index.php; | |
include fastcgi_params; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
fastcgi_param PATH_INFO $fastcgi_path_info; | |
fastcgi_buffering off; | |
fastcgi_cache off; | |
fastcgi_read_timeout 4; | |
} | |
} |
<?php | |
header('Content-type: text/event-stream'); | |
for ($i = 0; $i < 10; $i++) { | |
foreach (['VilniusPHP', 'VilniusJs'] as $event) { | |
print 'data: ' . $event."\n\n"; | |
// print "\n\n"; | |
ob_flush(); | |
flush(); | |
usleep(1000000); | |
} | |
} |