Heim Web-Frontend H5-Tutorial Detaillierte grafische Erläuterung des HTML5-Data-Push-SSE-Prinzips und der Anwendungsentwicklung

Detaillierte grafische Erläuterung des HTML5-Data-Push-SSE-Prinzips und der Anwendungsentwicklung

Mar 08, 2017 pm 03:23 PM

JavaScript drückt das Verhalten aus und CSS drückt das Erscheinungsbild aus. Beachten Sie, dass HTML sowohl die Struktur (logische Struktur) als auch den Inhalt (Daten selbst) ausdrückt. Normalerweise muss die Struktur nicht aktualisiert werden Genau das geschieht. Der Wunsch, nur die Daten zu ändern, ohne die Organisationsstruktur zu ändern, hat die Entstehung von Data-Pull- und Data-Push-Technologien gefördert.

SSE ist eine HTML5-Technologie, die es dem Server ermöglicht, neue Daten an den Client zu übertragen (sogenannter Daten-Push). Es gibt zwei Alternativen zum Daten-Push: keine Aktualisierungen und Daten-Pull.

Keine Update-Lösung:

Nach dem Laden des HTML erhalten Sie eine HTML-Seite, und dann fordert der Browser Bilder, CSS-Dateien und JavaScript-Dateien an usw. Sie sind alles statische Dateien, die der Browser zwischenspeichern kann. Wenn die Seite eine Back-End-Sprache wie PHP, Ruby, Python und andere Sprachen verwendet, die dynamisch HTML für Benutzer generieren.

Datenabrufschema:

Der Browser sendet Daten basierend auf einem Benutzerverhalten oder nach einem bestimmten Zeitraum oder basierend auf ein anderes Triggerschema. Die Serverseite fordert alle Daten an oder aktualisiert sie und kann die gesamte Seite über JavaScript oder ein Meta-Tag neu laden. Die bekannte Ajax-Technologie wird nur zum Anfordern der neuesten Daten verwendet. Wenn die Daten empfangen werden, verwendet die Javascript-Funktion diese, um das DOM lokal zu aktualisieren. Die Essenz des Datenabrufs besteht darin, nur neue Daten abzurufen und nur die betroffenen Teile der Seite zu aktualisieren.

Keiner der oben genannten Punkte ist ein Daten-Push. Dabei handelt es sich nicht um eine statische Datei, und der Browser initiiert auch keine Anfrage zum Aktualisieren von Daten. Beim Daten-Push wählt der Server den Client aus, um neue Daten zu senden.

Wenn die Datenquelle neue Daten enthält, kann der Server diese sofort an einen oder mehrere Clients senden, ohne auf die Anforderung dieser neuen Daten durch den Client zu warten Nachrichten, aktuelle Aktien, Chat-Nachrichten von Online-Freunden, neue Wettervorhersagen, nächste Schritte in Strategiespielen usw.

SSE eignet sich für häufige Updates, geringe Latenz und Daten vom Server zum Client. Der Unterschied zu WebSocket:

1) Komfort: Es ist nicht erforderlich, neue Komponenten hinzuzufügen Eine neue IP oder eine neue virtuelle Maschine für eine neue virtuelle Maschine. Die Portnummer ist problematisch.

2) Einfachheit auf der Serverseite. Da SSE mit vorhandenen HTTP/HTTPS-Protokollen arbeitet, kann es direkt auf vorhandenen Proxyservern und Authentifizierungstechnologien ausgeführt werden.

Der größte Vorteil von WebSocket gegenüber SSE besteht darin, dass es sich um eine bidirektionale Kommunikation handelt, was bedeutet, dass das Senden von Daten vom Server genauso einfach ist wie das Empfangen von Daten vom Server, während SSE im Allgemeinen vom Client zum Server geht Server über eine unabhängige Ajax-Anfrage Daten übertragen, daher erhöht die Verwendung von Ajax den Overhead im Vergleich zu WebSocket. Wenn Sie Daten einmal pro Sekunde oder schneller an den Server übertragen müssen, sollten Sie daher WebSocket verwenden.

Der spezifische Code lautet wie folgt:

HTML-Code

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>basic SSE test</title>
    </head>
    <body>
        <pre id = "x">initializting...
<script> var es = new EventSource("basic_sse.php"); es.addEventListener("message",function(e){ //e.data document.getElementById("x").innerHTML += "\n"+e.data; },false);//使用false表示在冒泡阶段处理事件,而不是捕获阶段。 </script>
Nach dem Login kopieren

Es sollte Beachten Sie Folgendes: Es ist am besten, dies zu überprüfen, bevor Sie serverseitige Daten verwenden, um potenzielle JavaScript-Injection-Angriffe zu verhindern.

PHP-Code

<?php
    header(&#39;Content-Type: text/event-stream&#39;);
    header(&#39;Cache-Control: no-cache&#39;);
    $time = date(&#39;r&#39;);
    echo "data: The server time is: {$time}\n\n";
    flush();
?>
Nach dem Login kopieren

„Content-Type: text/event-stream“ ist speziell für SSE Entworfener MIME-Typ,

Screenshot der Wirkung

Wenn Daten-Push die falsche Wahl ist

Erwägen Sie zuerst In Im statischen Fall wird kein Daten-Push eingeführt. Immer wenn der Benutzer eine Seite öffnet, wird eine Socket-Verbindung zwischen dem Browser und dem Server hergestellt. Die Server-Telefoninformationen werden dann an den Benutzer zurückgegeben Das Laden einer statischen HTML-Datei oder eines Bildes kann komplex sein, wie das Ausführen einer Hintergrundsprache, die eine Verbindung zu vielen Datenbanken herstellt. Der entscheidende Punkt hierbei ist, dass der Socket geschlossen wird, sobald die erforderlichen Informationen zurückgegeben werden, und jede HTTP-Anfrage eine dieser relativ kurzlebigen Socket-Verbindungen öffnet, deren Ressourcen auf dem Server begrenzt sind, sobald sie ihre beabsichtigten Aufgaben erfüllen zum Recycling.

Jetzt vergleichen wir den Daten-Push. Eine Anfrage wird nie abgeschlossen, es müssen immer viele Informationen gesendet werden, sodass der Socket offen bleibt. Da es sich um begrenzte Ressourcen handelt, ist die Anzahl der gleichzeitigen SSE-Verbindungen natürlich begrenzt.

Stellen Sie sich eine Situation vor, in der Sie telefonischen Service-Support für Ihre neueste Anwendung leisten. Es gibt 10 Callcenter-Mitarbeiter, die 1000 Benutzer betreuen. Der Benutzer stößt auf ein Problem und einer der Operatoren nimmt den Anruf entgegen und legt dann auf. Neue Kundenanrufe bleiben in der Warteschlange, bis einer der Telefonisten auflegt, was ein typisches Netzwerkdienstmuster ist.

Jetzt rief jedoch ein Kunde an und sagte: „Ich habe jetzt kein Problem, aber ich werde Ihr Produkt in den nächsten Stunden verwenden, und wenn ich auf Probleme stoße, hoffe ich, dass Sie sofort reagieren.“ Dieser Kunde telefoniert mehrere Stunden lang mit dem Betreiber und 10 % der Serviceressourcen des Callcenters werden verschwendet. Wenn es 10 solcher Kunden gibt, können die anderen 990 Kunden nicht anrufen. Dies ist das Daten-Push-Modell.

Natürlich ist das nicht immer eine schlechte Sache. Wenn dieser Kunde den ganzen Nachmittag über alle paar Sekunden ein Problem hat, verschwendet das Offenhalten des Telefons nicht 10 % der Serviceressourcen, sondern erhöht diese. Da jede Frage einen neuen Anruf erfordert (z. B. einen Datenabruf), müssen Betreiber zusätzliche Zeit für die Überprüfung der Kundenidentität und den Abruf von Konten aufwenden, was die Serviceeffizienz verringert. Das Bleiben am Telefon macht die Kunden in der Regel nicht nur zufriedener, sondern verbessert auch die Produktivität des Callcenters, was das am besten geeignete Szenario für den Datenpush ist.


Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erläuterung des HTML5-Data-Push-SSE-Prinzips und der Anwendungsentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles