Dier_Sergio_Great
@Dier_Sergio_Great
Увлеченный человек

Почему сообщения SSE сервера приходят только когда возникает ошибка соединения?

Почему сообщения сервера приходят все сразу после инициализации последней ошибки получения сообщения с сервера?
date_default_timezone_set('Europe/Moscow'); 
header('Cache-Control: no-cache\n\n');
header("Content-Type: text/event-stream\n\n");
//header("Connection: keep-alive\n\n");
$length = 20;
while(++$length > 0){
	echo "data: 2 $DevID  Start Stream !\n\n"; 
	ob_end_flush();
	flush();
	sleep(5);
}

На клиенте разумеется
const evtSource = new EventSource('event.php');
evtSource.onopen = function(open){
	console.log('Open EventSource:  \n',open);
};
evtSource.onmessage = function(event){
	console.log('Work EventSource!!!! \n',event.data);        
};
evtSource.onerror = function(err){
	console.log('Error EventSource:  \n',err);
};

Т.е. в консоль браузера вначале появляется сообщение об открытии соединения. А потом молчание на очень долго. А потом все сообщения сразу вываливаются с завершающим сообщением об ошибке.
Согласно описанию https://developer.mozilla.org/ru/docs/Web/API/Serv...
я все сделал правильно.
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
@rPman
никогда не пользовался инветами, мне больше вебсокеты по душе, да и там пользовался готовой библиотекой

по теме - вопрос, что за веб сервер, как запускается php (cgi или модуль) потому как возможно сервер тут виноват а не код

p.s. если твой код запустить в php -S то все работает (ругается на $DevID само собой и лимит времени запуска в 30 секунд но продолжает работать)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы