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.
WebSocket-Eigenschaften
Im Folgenden sind die Eigenschaften des WebSocket-Objekts aufgeführt. Angenommen, wir haben das obige Socket-Objekt erstellt: 只读属性readyState表示连接的状态。有以下取值: 0 表示连接尚未建立。 1 表示连接已建立,可以进行通信。 2 表示连接正在进行关闭握手。 3 表示连接已经关闭或者连接不能打开。 只读属性bufferedAmount表示已经使用 send() 方法排队的 URF-8 文本字节数。 send(data) 方法使用连接传输数据。 close() 方法用于终止任何现有连接。 Server-Push-Ereignisse 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 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. Serverseitiges SSE-Skript
Attribut
Beschreibung
Socket.readyState
Schreibgeschütztes Attribut
readyState stellt den Status der Verbindung dar. Es hat die folgenden Werte:
属性
描述
Socket.readyState
Socket.bufferedAmount
0 bedeutet, dass die Verbindung noch nicht hergestellt wurde.
事件
事件处理程序
描述
open
Socket.onopen
建立 socket 连接时触发这个事件。
message
Socket.onmessage
客户端从服务器接收数据时触发。
error
Socket.onerror
连接发生错误时触发。
close
Socket.onclose
连接被关闭时触发。
2 zeigt an, dass die Verbindung gerade einen schließenden Handshake durchläuft.
方法
描述
Socket.send()
Socket.close()
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:
Socket.bufferedAmount
Schreibgeschütztes AttributbufferedAmountStellt die Anzahl der URF-8-Textbytes dar, die mit der send()-Methode in die Warteschlange gestellt wurden.
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.
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.
Um Server-Push-Ereignisse in einer Webanwendung zu verwenden, müssen wir dem Dokument ein
Das serverseitige Skript sollte einen Content-Type-Header senden, der den Typ als Text/Ereignisstream angibt, wie unten gezeigt:
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.
Verarbeitung von Server-Push-Ereignissen
Lassen Sie uns unsere Webanwendung so ändern, dass sie Server-Push-Ereignisse verarbeitet. Hier ist das letzte Beispiel:
在测试服务器推送事件之前,建议你确保你的 Web 浏览器支持这一概念.