Проблемы с EventSource

Пытаюсь на практике понять как работает приблуда EventSource. Вот простенький код на js:

let eventSource = new EventSource('/dist/EventSource.php');
eventSource.onmessage = e => {
    console.log(e.data); // хочу видеть сообщение в консоли
}

А вот что имеем в EventSource.php (запускаю на локальном сервере MAMP):

<?php
header('Content-Type: text/event-stream');
echo 'data: message' . "\n\n";
?>

Но почему то сообщения message в консоль поступают один за другим бесконечно, хотя команду echo в php я написал один только раз.

Как сделать чтобы из php кода сообщение отправлялось только один раз? без разрыва соединения


Ответы (1 шт):

Автор решения: Condor

EventSource как и WebSocket, держит соединение постоянно. Используйте метод close, который завершит соединение:

let eventSource = new EventSource('/dist/EventSource.php');
eventSource.onmessage = e => {
    console.log(e.data); // хочу видеть сообщение в консоли
}

eventSource.close();
→ Ссылка