So verwenden Sie HTML5-Server-Sent-Ereignisse
- 1941
- 625
- Miriam Bauschke
Zielsetzung
Nach dem Lesen dieses Tutorials sollten Sie in der Lage sein, HTML5-Server-Sent-Ereignisse zu verstehen und zu nutzen.
Anforderungen
- Keine besonderen Anforderungen erforderlich
Konventionen
- # - Erfordert, dass der Befehl gegebener Linux entweder mit Root -Berechtigungen ausgeführt werden muss
direkt als Stammbenutzer oder durch Verwendung vonsudo
Befehl - $ - Der Befehl Linux wird als regelmäßiger nicht privilegierter Benutzer ausgeführt
Einführung
Server-Sent-Ereignisse sind ein HTML5
Technologie, die es einem Client ermöglicht, automatisch Ereignisbenachrichtigungen von einem Server zu überwachen und nach Bedarf zu reagieren. Diese Technologie ist sehr nützlich, um Live -Events zu benachrichtigen, beispielsweise eine Live -Messaging -Anwendung oder einen Newsfeed zu implementieren. In diesem Tutorial werden wir sehen, wie diese Technologie mit PHP und JavaScript implementiert wird.
Ein einfaches Beispiel
Aus diesem Grund werden wir mit einer Liste von „Tieren“ arbeiten, die auf einer einfachen HTML -Seite angezeigt werden. Während in einer realen Anwendung die Daten aus einer Datenbank gespeichert und abgerufen worden wären, werden wir in diesem Fall zum Einfachheit halber ein PHP-Array verwenden. Was wir erhalten möchten, ist eine Echtzeit-Benachrichtigung über die Änderungen in der Tierliste, damit wir unsere HTML-Seite entsprechend aktualisieren können, ohne sie aktualisieren zu müssen.
Der Server -Seitencode
Lassen Sie uns zunächst unsere kleine Auswahl an Tieren in der bevölkern Tiere.Php
Datei (wir arbeiten im Stammverzeichnis unseres Webservers virtualHost):
Kopieren Speichern und schließen Sie die Datei als Tiere.Php
. Für den wichtigsten Teil: Wir müssen das Skript schreiben, das die Nachricht ausgibt, die in letzter Zeit von unserem clientseitigen Javascript-Code verwendet wird. Mit viel Fantasie werden wir das Skript benennen Skript.Php
. Der Code ist sehr einfach, hier ist er:
Kopieren Das erste, was wir hier bemerken müssen, ist, dass wir das angerufen haben Header
Funktion in Zeilen 2-3: Dies ist eine Funktion, die zum Senden verwendet wird rohe HTTP -Header
. In diesem Fall nennen wir es zweimal: die erste in Zeilen 2, um die einzurichten Cache-Kontroll
Headerfeld und Geben Sie Caching -Direktiven an (kein Seiten zwischen Seite), die zweite in den Zeilen 3, um die festzulegen Inhaltstyp
Zu Text/Ereignisstrom
. Diese Header -Setups sind erforderlich, damit unser Skript korrekt funktioniert. Es ist auch wichtig zu bemerken, dass das richtige funktioniert, die Header
Die Funktion muss immer aufgerufen werden, bevor eine andere Ausgabe erstellt wird.
Nachdem wir die HTML -Header eingerichtet hatten, haben wir einfach die verwendet einmalig benötigt
Anweisung in Zeilen 6, um den Inhalt der zu verlangen Tiere.Php
Datei, die das Array enthält, das wir zuvor geschrieben haben. In einem realen Szenario wäre dies durch a ersetzt worden SQL -Abfrage
Um solche Informationen aus einer Datenbank abzurufen.
Schließlich haben wir in den Zeilen 9-11 unsere Antwort an den Kunden gesendet: die JSON-codiert
"Tiere" Array. Eine sehr wichtige Sache zu bemerken: Server -Side -Ereignis -Format erfordert, dass jede vom Server gesendete Antwort von der vorangestellt wird Daten:
Saite und gefolgt von zwei Newline -Charaktere
. In diesem Fall haben wir die verwendet \N
Newline-Charakter, weil wir auf einer Unix-ähnlichen Plattform laufen; Um die plattformübergreifende Kompatibilität sicherzustellen, hätten wir die verwendet Php_eol
Konstante.
Es ist sogar möglich, die Antwortnachricht in mehreren Zeilen zu brechen: In diesem Fall muss jede Zeile, wie bereits gesagt, mit „Daten“ beginnen: und muss von einem einzelnen neuen Zeilenzeichen folgen. Die zusätzliche Newline ist nur in der letzten Zeile erforderlich.
Der Server kann auch steuern, wie oft der Client versuchen sollte, sich wieder zu verbinden 3
Sekunden) und der Name der Fall
(Standard ist "Nachricht") an den Client gesendet. Um das erstere anzupassen, müssen wir die verwenden wiederholen
Richtlinie gefolgt von dem gewünschten Zeitintervall, ausgedrückt in Millisekunden. Zum Beispiel ein Intervall von 1 Sekunde einrichten:
Echo "RETRY: 1000 \ n";
Beachten Sie, dass selbst hier eine nachfolgende Newline erforderlich ist. Um den Ereignisnamen zu ändern, müssen wir stattdessen die verwenden Fall
Richtlinie:
Echo "Ereignis: CustomEvent \ n";
Das Standard -Ereignis ist „Nachricht“: Dies ist wichtig, da das Ereignis beim Hinzufügen des Ereignishörers im Client Javascript -Code angegeben werden muss.
Nachdem wir unsere Antwort gesendet hatten, haben wir das angerufen spülen
Funktion: Dies ist erforderlich, um die Daten an den Client zu übergeben.
Client -Seitencode
Das erste, was wir Client -Seite machen, ist die Vorbereitung unserer HTML -Datei mit der Liste der verfügbaren Tiere:
Kopieren Dies ist wirklich ein grundlegendes HTML mit ein wenig PHP, um die Liste der Tiere zum Zeitpunkt des Ladens der Seite anzuzeigen und unsere einzuschließen .JS -Datei (Skript.JS), wird aber unserem Zweck servieren. Lassen Sie uns nun sehen, wie wir tatsächlich Server -Seitenereignisse verwenden können. Das erste, was wir tun müssen, ist, eine zu instanziieren Ereignisquellobjekt
. Schreiben Sie in unserer JavaScript -Datei:
Lassen Sie EventSource = New EventSource ('Skript.PHP ');
Kopieren Wie Sie sehen können, haben wir den Pfad an unser Serverskript als Argument in der Eventource
Objektkonstruktor. Dieses Objekt öffnet eine Verbindung zum Server. Jetzt müssen wir eine hinzufügen Event -Hörer
, Damit können wir einige Aktionen ausführen, wenn eine Nachricht vom Server empfangen wird:
Lassen Sie EventSource = New EventSource ('Skript.PHP '); Eventource.AddEventListener ("Nachricht", Funktion (Ereignis) let data = json.analysieren (Ereignis.Daten); Lassen Sie ListElements = Dokument.GetElementsByTagName ("li"); für (lass i = 0; i < listElements.length; i++) let animal = listElements[i].textContent; if (!data.includes(animal)) listElements[i].style.color = "red"; );
Kopieren Wenn eine Nachricht empfangen wird, verwenden wir die JSON.analysieren
Methode in Zeile 4, um die vom Server gesendeten Daten zu transformieren (eine Zeichenfolge, die in der enthalten ist Daten
Eigenschaft des Ereignisobjekts) in ein JavaScript -Array.
Danach schleifen wir in den Zeilen 7-11 durch alle Elemente mit dem Tag, die die Elemente unserer Tiereliste sind: Wenn ein Element im Array, der vom Server gesendet wird, nicht mehr zu sein scheint, wird die Farbe des in der Liste enthaltenen Text länger verfügbar (eine bessere Lösung wäre gewesen, nur den geänderten oder fehlenden Elementnamen in die Serverreaktion aufzunehmen, aber unser Ziel ist es jedoch nur, zu demonstrieren, wie die Technologie funktioniert). Die Änderung der Seite erfolgt in Echtzeit, sodass Sie nicht aktualisieren müssen. Sie können beobachten, wie unsere Seite im folgenden Video die Server -Sent -Ereignisse nutzt:
Wie Sie sehen können, wird das in der HTML -Seite angezeigte Element, sobald die "Katze" aus dem "Tiere" -Array (unsere Datenquelle) entfernt wird, geändert, um diese Änderung widerzuspiegeln.
Der Datenstrom zwischen dem Server und dem Client kann unter Verwendung des schließen
Methode der Eventource
Objekt:
Eventource.schließen()
Um mit der Verbindung umzugehen offen
, Und Fehler
Ereignisse, engagierte Ereignishörer können dem Objekt hinzugefügt werden.
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- So senden Sie Desktop-Benachrichtigungen mit Benachrichtigungssend
- So behandeln Sie ACPI -Ereignisse unter Linux
- So erstellen Sie eine Tkinter -Anwendung mithilfe eines objektorientierten…
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
- Grundlegende Linux -Befehle
- FTP -Clientliste und -installation auf Ubuntu 22.04 Linux…
- Live CD/DVD Linux Download
- « Installieren Sie Intel Wireless Firmware auf Debian 7 Wheezy
- Verschlüsseln Sie ein Laufwerk mit Veracrypt unter Linux »