Page 1 of 3
PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 16. Jan 2022, 19:47
by bernhard
Hallo,
ich würde gerne PHP SSE verwenden, aber schaffe es leider nicht, das auf meinem KeyHelp Server zum Laufen zu bringen... Lokal auf Windows + Laragon läuft es sofort ohne Probleme.
Ich hab folgende PHP Datei sse.php (siehe
https://developer.mozilla.org/en-US/doc ... ent_events )
Code: Select all
<?php
header("Cache-Control: no-cache");
header("Content-Type: text/event-stream");
$i = 0;
while(++$i<=10) {
echo "event: ping\n";
$curDate = date(DATE_ISO8601);
echo 'data: {"time": "' . $curDate . '"}';
echo "\n\n";
file_put_contents(__DIR__."/dump.txt", "triggered@$curDate\n", FILE_APPEND);
ob_end_flush();
flush();
if ( connection_aborted() ) break;
sleep(1);
}
Und folgende index.php
Code: Select all
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const evtSource = new EventSource("sse.php", { withCredentials: true } );
evtSource.onmessage = function(event) {
console.log(event.data);
}
</script>
</body>
</html>
ein tail -f dump.txt liefert mir alle getriggerten events:
Aber per Javascript kann ich leider nicht darauf zugreifen... nichts... Habt ihr Ideen?
Ich freue mich über Hilfe! Was könnte es da haben?
Danke im Voraus!
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Fri 21. Jan 2022, 10:42
by bernhard
Hat niemand eine Idee?
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Fri 21. Jan 2022, 13:58
by Tobi
Ich mache solche Sachen mit jQuery.
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Fri 21. Jan 2022, 16:15
by bernhard
Ähm... danke für die Antwort. Und zwar wie?
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Fri 21. Jan 2022, 20:01
by Tobi
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sat 22. Jan 2022, 10:40
by bernhard
Es geht aber nicht um AJAX sondern um SSE
Hat niemand SSE mit KeyHelp am Laufen?
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sat 22. Jan 2022, 14:06
by Tobi
baumrock wrote: ↑Sat 22. Jan 2022, 10:40
Es geht aber nicht um AJAX sondern um SSE
Deswegen sagte ich ja:
„Ich mache solche Sachen mit jQuery“
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 10:38
by bernhard
Sehr lustig. "Solche Sachen" gehen aber nicht mit AJAX, sonst würde ich es ja einfach mit AJAX machen...
Trotzdem danke...
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 11:27
by OlliTheDarkness
baumrock wrote: ↑Sun 16. Jan 2022, 19:47
Hallo,
ich würde gerne PHP SSE verwenden, aber schaffe es leider nicht, das auf meinem KeyHelp Server zum Laufen zu bringen... Lokal auf Windows + Laragon läuft es sofort ohne Probleme.
Ich hab folgende PHP Datei sse.php (siehe
https://developer.mozilla.org/en-US/doc ... ent_events )
Code: Select all
<?php
header("Cache-Control: no-cache");
header("Content-Type: text/event-stream");
$i = 0;
while(++$i<=10) {
echo "event: ping\n";
$curDate = date(DATE_ISO8601);
echo 'data: {"time": "' . $curDate . '"}';
echo "\n\n";
file_put_contents(__DIR__."/dump.txt", "triggered@$curDate\n", FILE_APPEND);
ob_end_flush();
flush();
if ( connection_aborted() ) break;
sleep(1);
}
Und folgende index.php
Code: Select all
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const evtSource = new EventSource("sse.php", { withCredentials: true } );
evtSource.onmessage = function(event) {
console.log(event.data);
}
</script>
</body>
</html>
ein tail -f dump.txt liefert mir alle getriggerten events:
Aber per Javascript kann ich leider nicht darauf zugreifen... nichts... Habt ihr Ideen?
Ich freue mich über Hilfe! Was könnte es da haben?
Danke im Voraus!
Moin,
also SSE auf KH läuft wunderbar.
SSE auf KH
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 11:32
by bernhard
Hallo OlliTheDarkness!
Vielen Dank für's testen!! Bei mir läuft es leider nicht:
http://sse.baumrock.com/sse.html
Ich weiß aber nicht, woran das liegt bzw. wie ich das debuggen könnte?! Ich hab die Vermutung, dass es irgendwas mit GZIP zu tun hat. Kann das aber nicht verifizieren. Wäre über jeden Tipp dankbar!
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 11:36
by OlliTheDarkness
baumrock wrote: ↑Sun 23. Jan 2022, 11:32
Hallo OlliTheDarkness!
Vielen Dank für's testen!! Bei mir läuft es leider nicht:
http://sse.baumrock.com/sse.html
Ich weiß aber nicht, woran das liegt bzw. wie ich das debuggen könnte?! Ich hab die Vermutung, dass es irgendwas mit GZIP zu tun hat. Kann das aber nicht verifizieren. Wäre über jeden Tipp dankbar!
Kopier dir mal den 0815 Code bei mir im Link, ob es überhaupt grundsätzlich läuft.
Wenn meine Demo bei dir schon nicht läuft, haben wir ein grundsätzliches Problem.
Was schon sehr misteriös wäre.
Wenn es läuft, hast nen knaller in deinem Script, das schauen wir uns dann mal genauer an.
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 11:47
by OlliTheDarkness
Code: Select all
echo "event: ping\n";
$curDate = date(DATE_ISO8601);
echo 'data: {"time": "' . $curDate . '"}';
echo "\n\n";
Code: Select all
echo "event: ping\n";
$curDate = date(DATE_ISO8601);
echo "data: Zeit {$curDate}";
echo "\n\n";
EDIT
An gzip etc liegts nicht.
Fahr die selbe Anfrage mit gzip etc, wie du.
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 11:50
by bernhard
Ha - zu früh gefreut! Dein Beispiel funktioniert auch nicht so wie es sein soll
Was dein Skript macht ist genau das gleiche wie bei mir: Es schickt den Request an sse.php, bricht dann aber den Stream ab und schickt einen neuen Request. Das ist also im Prinzip das gleiche wie ein AJAX request in einem setTimeout() oder setInterval(). Aber nicht ein richtiger SSE Stream, der mir Events schickt, die ich auslesen kann:
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 11:59
by bernhard
EDIT
An gzip etc liegts nicht.
Fahr die selbe Anfrage mit gzip etc, wie du.
Ja und du hast dasselbe Problem wie ich
Re: PHP SSE (Server Sent Events) + KeyHelp
Posted: Sun 23. Jan 2022, 12:09
by OlliTheDarkness
baumrock wrote: ↑Sun 23. Jan 2022, 11:59
EDIT
An gzip etc liegts nicht.
Fahr die selbe Anfrage mit gzip etc, wie du.
Ja und du hast dasselbe Problem wie ich
Aber rein von der Logik her ist es doch korrekt.
Du musst regelmässig nen XHR absetzen.
Der Client muss die Daten ja erfragen.
Oder steh ich jetzt ganz neben der Spur und verstehe die gesamte Problematik grad nicht