В данный момент уже можно использовать SSE почти во всех браузерах, за исключением IE.
Метод грязный но рабочий, суть метода проста, мы отсылаем обычный XHR запрос, на сервере отдаём заголовок event-stream и не рвём соединение, вот и всё мы получаем постоянное соединение с сервером.
Ниже код JS+php
//JS side of dirt SSE
//timeout to load indicator skip
setTimeout(function(){
var transport = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
transport.open('GET', 'test.php', true);
transport.onreadystatechange=parse;
transport.send();
},500);
function parse(){
//make element with id = response inside html or use console.log
document.getElementById('response').innerHTML = this.responseText;
}
<?php
//php side of SSE
set_time_limit(0);
header("Content-type: text/event-stream");
while(true){
echo time().'
';
//ob_flush and flush is needed, without it not be output
ob_flush();
flush();
sleep(1);
}
?>
В данный момент уже можно использовать SSE почти во всех браузерах, за исключением IE.
Метод грязный но рабочий, суть метода проста, мы отсылаем обычный XHR запрос, на сервере отдаём заголовок event-stream и не рвём соединение, вот и всё мы получаем постоянное соединение с сервером.
Ниже код JS+php
//JS side of dirt SSE
//timeout to load indicator skip
setTimeout(function(){
var transport = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
transport.open('GET', 'test.php', true);
transport.onreadystatechange=parse;
transport.send();
},500);
function parse(){
//make element with id = response inside html or use console.log
document.getElementById('response').innerHTML = this.responseText;
}
<?php
//php side of SSE
set_time_limit(0);
header("Content-type: text/event-stream");
while(true){
echo time().'
';
//ob_flush and flush is needed, without it not be output
ob_flush();
flush();
sleep(1);
}
?>