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:
Image

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:
Image

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:

Image

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 :lol: :lol: