Heim Web-Frontend H5-Tutorial Eine kurze Analyse der WebSocket- und Server-Push-Events_html5-Tutorialfähigkeiten von HTML5

Eine kurze Analyse der WebSocket- und Server-Push-Events_html5-Tutorialfähigkeiten von HTML5

May 16, 2016 pm 03:45 PM
html5 websocket

WebSockets

Web Sockets ist eine neue Generation bidirektionaler Kommunikationstechnologie für Webanwendungen, die auf einem einzigen Socket ausgeführt wird und in HTML5-kompatiblen Browsern über eine JavaScript-Schnittstelle verfügbar gemacht wird.

Sobald Sie die Web-Socket-Verbindung auf dem Webserver erhalten haben, können Sie Daten vom Browser an den Server senden, indem Sie die send()-Methode aufrufen, und Daten vom Server über den onmessage-Ereignishandler an den Browser empfangen.

Das Folgende ist die API zum Erstellen eines neuen WebSocket-Objekts.

JavaScript-CodeInhalt in die Zwischenablage kopieren
  1. varSocket = new WebSocket(url, [protocal] );
Der erste Parameter URL wird verwendet, um die URL anzugeben, zu der eine Verbindung hergestellt werden soll. Das zweite Attribut – Port – ist optional und gibt, falls angegeben, ein Unterprotokoll an, das der Server für eine erfolgreiche Verbindung unterstützen muss.

WebSocket-Eigenschaften

Im Folgenden sind die Eigenschaften des WebSocket-Objekts aufgeführt. Angenommen, wir haben das obige Socket-Objekt erstellt:
Attribut Beschreibung Socket.readyState Schreibgeschütztes Attribut
readyState stellt den Status der Verbindung dar. Es hat die folgenden Werte:

属性 描述
Socket.readyState

只读属性readyState表示连接的状态。有以下取值:

  1. 0 表示连接尚未建立。

  2. 1 表示连接已建立,可以进行通信。

  3. 2 表示连接正在进行关闭握手。

  4. 3 表示连接已经关闭或者连接不能打开。

Socket.bufferedAmount

只读属性bufferedAmount表示已经使用 send() 方法排队的 URF-8 文本字节数。


  1. 0 bedeutet, dass die Verbindung noch nicht hergestellt wurde.
  2. 1 bedeutet, dass die Verbindung hergestellt ist und eine Kommunikation möglich ist.
    事件 事件处理程序 描述
    open Socket.onopen 建立 socket 连接时触发这个事件。
    message Socket.onmessage 客户端从服务器接收数据时触发。
    error Socket.onerror 连接发生错误时触发。
    close Socket.onclose 连接被关闭时触发。

  3. 2 zeigt an, dass die Verbindung gerade einen schließenden Handshake durchläuft.
  4. 3 bedeutet, dass die Verbindung geschlossen wurde oder nicht geöffnet werden kann.
    方法 描述
    Socket.send()

    send(data) 方法使用连接传输数据。

    Socket.close()

    close() 方法用于终止任何现有连接。

Socket.bufferedAmount Schreibgeschütztes AttributbufferedAmountStellt die Anzahl der URF-8-Textbytes dar, die mit der send()-Methode in die Warteschlange gestellt wurden. WebSocket-Ereignisse Die folgenden Ereignisse beziehen sich auf das WebSocket-Objekt. Angenommen, wir haben das obige Socket-Objekt erstellt: WebSocket-Methoden Die folgenden Methoden beziehen sich auf das WebSocket-Objekt. Angenommen, wir haben das obige Socket-Objekt erstellt: Methode Beschreibung Socket.send() Die send(data)-Methode verwendet eine Verbindung zum Übertragen von Daten. Socket.close() Die Methode close() wird verwendet, um eine bestehende Verbindung zu beenden.

Server-Push-Ereignisse
Herkömmliche Webanwendungen generieren Ereignisse, die an die Webserverseite gesendet werden. Wenn Sie beispielsweise auf einen Link klicken, wird eine neue Seite vom Server angefordert.

Diese Art von Zeit vom Webbrowser bis zum Webserver kann als clientseitiges Ereignis bezeichnet werden.

Mit der Einführung von HTML5 führte WHATWG Web Applications 1.0 einen Ereignisstrom vom Webserver zum Webbrowser namens Server Push Events (SSE) ein. Verwenden Sie SSE, um DOM-Ereignisse kontinuierlich an den Browser des Benutzers zu übertragen.

Diese Ereignis-Streaming-Methode stellt eine dauerhafte Verbindung zum Server her und sendet Daten an den Client, wenn neue Nachrichten verfügbar sind, sodass keine kontinuierliche Abfrage erforderlich ist.

SSE-Webanwendung
Um Server-Push-Ereignisse in einer Webanwendung zu verwenden, müssen wir dem Dokument ein -Element hinzufügen.

Das src-Attribut des

-Elements sollte auf eine URL verweisen, die eine dauerhafte HTTP-Verbindung zum Senden eines Datenstroms mit dem Ereignis bereitstellen sollte.

Diese URL verweist auf ein PHP-, PERL- oder ein beliebiges Python-Skript, das kontinuierlich Ereignisdaten sendet. Hier ist ein einfaches Beispiel einer Webanwendung, die die Serverzeit erwartet.

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. >
  2. <html>
  3. <Kopf>
  4. <Skript Typ="text/ Javascript">
  5. /* Definieren Sie hier die Event-Handling-Logik */
  6. Skript>
  7. Kopf>
  8. <Körper>
  9. <div id="sse" >
  10.  <eventsource src="/cgi -bin/ticker.cgi" />
  11. div>
  12. <div id="ticker" >
  13. <ZEIT>
  14. div>
  15. Körper>
  16. html>

Serverseitiges SSE-Skript
Das serverseitige Skript sollte einen Content-Type-Header senden, der den Typ als Text/Ereignisstream angibt, wie unten gezeigt:


Code kopieren
Der Code lautet wie folgt:
Drucken Sie „Content-Type: Text/Ereignis“. -streamnn" ;

Nach dem Festlegen des Inhaltstyps sendet das serverseitige Skript ein Event:-Tag, gefolgt vom Ereignisnamen. Im folgenden Beispiel wird eine mit einer neuen Zeile abgeschlossene Serverzeit als Ereignisname gesendet.


Code kopieren
Der Code lautet wie folgt:
print „Event: server-timen“;

Der letzte Schritt besteht darin, die Ereignisdaten mithilfe des Data:-Tags zu senden, gefolgt vom ganzzahligen Zeichenfolgenwert, der mit einer neuen Zeile abgeschlossen wird, etwa so:


Code kopieren
Der Code lautet wie folgt:
$time = localtime();
print " Daten: $timen";

Das Folgende ist die vollständige ticker.cgi in Perl geschrieben:


Code kopieren
Der Code lautet wie folgt:

#!/usr/bin /perl
print „Content-Type: text/event-streamnn“;
while(true){
print „Event: server-timen“;
$time = localtime();
print " Daten: $timen";
sleep(5);

Verarbeitung von Server-Push-Ereignissen
Lassen Sie uns unsere Webanwendung so ändern, dass sie Server-Push-Ereignisse verarbeitet. Hier ist das letzte Beispiel:

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. >  
  2. <html>  
  3. <Kopf>  
  4. <script type="text/ Javascript">  
  5.    document.getElementsByTagName("eventsource")[0].   
  6.             addEventListener("server-time", eventHandler, false);   
  7.    function eventHandler(event)   
  8.    {   
  9.        // vom Server gesendete Alarmzeit   
  10.        document.querySelector('#ticker').innerHTML = event.data;   
  11.   
  12.    }   
  13. Skript>  
  14. Kopf>  
  15. <Körper>  
  16. <div id="sse" >  
  17.    <eventsource src="/cgi -bin/ticker.cgi" />  
  18. div>  
  19. <div id="ticker"  Name="Ticker">  
  20.    [ZEIT]   
  21. div>  
  22. Körper>  
  23. html>  

在测试服务器推送事件之前,建议你确保你的 Web 浏览器支持这一概念.

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