Ein Darkmode wäre schön, nicht nur fürs Forum, sondern auch für die CCP, SCP und WCP.
Beiträge von monster010
-
-
2021-04-25 19_35_20-netcup ccp - Brave.png
Hier ne Hilfe in Bildform =), erreichbar ist der TeamSpeak dann über ts.xyz.de
-
Hallo monster010,
darf ich fragen, warum Du da machen möchtest ?
SSE ist heutzutage eine schlechte Idee. Es braucht zu viele Ressourcen, und Websockets werden inzwischen von jedem relevanten Browser unterstützt: https://caniuse.com/websockets
Außerdem ist PHP, sagen wir mal, nicht die beste Wahl für SSE.
Es gibt 2 Möglichkeiten
1) Dein event.php Script muss dazu in einer Schleife ewig loopen (z.B. mit while(true))
Jetzt musst Du innerhalb der Schleife regelmäßig checken, ob sich etwas geändert hat, z.B. in Redis, Mysql, Filesytem
Ein sehr einfaches Beispiel könnte jede Sekunde (sleep) checken, ob ein bestimmtest File existiert, und wenn ja, den Inhalt senden, und es dann löschen.
In Deiner ajax.php schreibst Du dann dieses File.
2) Du benötigst eine PHP Erweiterung die dem PHP script eine Möglichkeit bietet sich an ein Event zu binden.
z.B. Redis (sub/pub), dann kannst Du jedesmal, wenn Redis Dir einen Event sendet, ihn an Den Browser senden.
Dein ajax.php muss dann diesen Event an Redis senden.
Wie schon gesagt, nimm lieber Websockets und z.B. node.js, Java, .net Core oder vergleichbares.
Der Restliche (nicht Websocket-Teil) kann ja trotzdem PHP sein, wenn Dir das lieber ist
Andi22 Ich weiß, dass es Websockets gibt. Das Problem ist nur, dass ich auf etwas basiere das in PHP geschrieben ist und es das ganze in keine anderen Sprache gibt. Ergo sind Websockets mit schon raus.
Werde vermutlich die 1 umsetzen.
Es gibt auch gut funktionierende Möglichkeiten über SSE als Alternative zu WebSockets, wenn PHP verwendet wird braucht man dafür allerdings einen zusätzlichen, permanent laufenden, Prozess (damit würde das z.B. nicht auf einem netcup Webhosting laufen). Siehe z.B. https://github.com/dunglas/mercure
Man sendet dann über einen POST-Request vom PHP-Skript aus die Nachricht an diesen Server und der schickt es an alle verbundenen Clients weiter.
Ringelnatz Das Problem an deinem Vorschlag ist der permanent laufende Prozess.
-
Heyho Community,
ich weiß nicht, ob ich einfach nur falsch denke oder etwas vergesse.
Folgendes Problem:
Ich habe eine event.php, welche ich als URL für die EventSource verwende.
Jetzt möchte ich per POST-Request, einen "Prozess" auslösen, welcher Events an die event.php "senden" soll, damit sie am Ende beim EventSource auftreten.
Ums besser verständlich zu machen:
JavaScript
Code
Alles anzeigenvar es = new EventSource('event.php'); es.addEventListener('message', function(e) { var result = JSON.parse(e.data); console.log(result); }); $('#button').click(function(e) { var $data = { 'param': 'start' }; $.ajax({ url: 'ajax.php', cache: false, data: $data, dataType: 'json', method: 'POST', }); });
Den PHP Code Teil hab ich jetzt mal weg gelassen, da ich mir nicht sicher bin ich man es umsetzen kann.
-
Ein Dark-Mode wäre noch sehr schön im CCP, im Forum und auch im SCP =)