Задать вопрос
@paulvales

Почему Server Side Events не останавливаются?

Приветствую, пробую реализовать Server Side Events.
отслеживаю так
var eventSource = new EventSource("events.php");
eventSource.onmessage = function(e) {
  console.log("Пришло сообщение: " + e.data);
};

PHP
header("Content-Type: text/event-stream");
  header("Cache-Control: no-cache");
  header("Access-Control-Allow-Origin: *");
 echo "id: 1;\n\n";
 echo "data: work;\n\n";

Но в консоле приходит : "Пришло сообщение: work;" и через пару секунд снова приходит и так без конца.
  • Вопрос задан
  • 509 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
А что должно происходить? Вроде бы у Вас все логически верно. SSE слушает events.php, пока принудительно не закроется из JS либо PHP не пошлет header c Content-Type !== 'text/event-stream' (т.е. можно просто text/plain).

Либо можно передавать с сервера именное событие, например
event: closeconn
data: blablabla


а на стороне JS повесить слушателя:

eventSource.addEventListener('closeconn', function(e) {
  eventSource.close();
  alert('Соединение закрыто сервером');
});


Вот тут достаточно подробно расписано про SSE
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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