sse.php
<?php
header("Content-Type: text/event-stream");
echo "data: Hello, world!\n\n";
?>
index.html
<html>
<head>
</head>
<body>
<script>
var eventSource = new EventSource('sse.php');
eventSource.onopen = function(e) {
console.log("Открыто соединение");
};
eventSource.onerror = function(e) {
if (this.readyState == EventSource.CONNECTING) {
console.log("Ошибка соединения, переподключение");
} else {
console.log("Состояние ошибки: " + this.readyState);
}
};
eventSource.onmessage = function(e) {
console.log("Сообщение: " + e.data);
};
</script>
</body>
</html>
Этот пример сразу передает "Hello, world!". Если поместить код
echo "data: Hello, world!\n\n";
в цикл, то будет передавать постоянно. А как сделать чтобы передача данных производилась в нужный мне момент времени?
Кроме варианта с "костылем" в "sse.php" в виде чтения из базы данных в цикле и пересылке "Hello, world!" при срабатывании условия.