logo

Was ist ein Web-Socket und wie unterscheidet er sich von HTTP?

HTTP und WebSocket sind beide Kommunikationsprotokolle, die in der Client-Server-Kommunikation verwendet werden.

HTTP-Protokoll: HTTP ist unidirektional, wobei der Client die Anfrage sendet und der Server die Antwort sendet. Nehmen wir ein Beispiel: Wenn ein Benutzer eine Anfrage an einen Server sendet, sendet diese Anfrage die Form von HTTP oder HTTPS. Nachdem der Server eine Anfrage erhalten hat, sendet er eine Antwort an den Client Die Verbindung wird geschlossen, jede HTTP- oder HTTPS-Anfrage stellt jedes Mal eine neue Verbindung zum Server her und nach Erhalt der Antwort wird die Verbindung von selbst beendet.
HTTP ist ein zustandsloses Protokoll, das auf TCP läuft, einem verbindungsorientierten Protokoll, das die Zustellung der Datenpaketübertragung mithilfe der Drei-Wege-Handshaking-Methoden garantiert und die verlorenen Pakete erneut überträgt.



HTTP kann auf jedem zuverlässigen verbindungsorientierten Protokoll wie TCP, SCTP ausgeführt werden. Wenn ein Client eine HTTP-Anfrage an den Server sendet, ist eine TCP-Verbindung zwischen Client und Server geöffnet und nach Erhalt der Antwort wird die TCP-Verbindung beendet. Jede HTTP-Anfrage öffnet eine separate TCP-Verbindung zum Server, z. B. Wenn der Client 10 Anfragen an den Server sendet, werden die 10 separaten TCP-Verbindungen geöffnet. und wird geschlossen, nachdem die Antwort/Fallback erhalten wurde.

In ASCII codierte HTTP-Nachrichteninformationen, jede HTTP-Anforderungsnachricht besteht aus HTTP-Protokollversion (HTTP/1.1, HTTP/2), HTTP-Methoden (GET/POST usw.), HTTP-Headern (Inhaltstyp, Inhaltslänge), Hostinformationen usw . und der Text, der die eigentliche Nachricht enthält, die an den Server übertragen wird. Die Größe der HTTP-Header variierte zwischen 200 Byte und 2 KB, die übliche Größe des HTTP-Headers liegt bei 700–800 Byte. Wenn eine Webanwendung auf der Clientseite mehr Cookies und andere Tools verwendet, die die Speicherfunktionen des Agenten erweitern, verringert sich die Nutzlast des HTTP-Headers.



WebSocket: WebSocket ist bidirektional, ein Vollduplex-Protokoll, das im Gegensatz zu HTTP, von dem es ausgeht, im gleichen Szenario der Client-Server-Kommunikation verwendet wird ws:// oder wss:// . Es handelt sich um ein zustandsbehaftetes Protokoll, was bedeutet, dass die Verbindung zwischen Client und Server so lange bestehen bleibt, bis sie von einer der Parteien (Client oder Server) beendet wird. Nachdem die Verbindung entweder vom Client oder vom Server geschlossen wurde, wird die Verbindung von beiden Seiten beendet.

Powershell-Administrator

Nehmen wir ein Beispiel für die Client-Server-Kommunikation. Da ist der Client ein Webbrowser und ein Server. Immer wenn wir die Verbindung zwischen Client und Server initiieren, führt der Client-Server den Handshake durch und beschließt, eine neue Verbindung und diese Verbindung herzustellen bleibt am Leben, bis es von einem von ihnen beendet wird. Wenn die Verbindung aufgebaut und aktiv ist, erfolgt die Kommunikation über denselben Verbindungskanal, bis sie beendet wird.

Auf diese Weise entscheidet der Client-Server nach dem Client-Server-Handshaking über eine neue Verbindung, um diese aufrechtzuerhalten. Diese neue Verbindung wird als WebSocket bezeichnet. Sobald die Kommunikationsverbindung hergestellt und die Verbindung geöffnet ist, erfolgt der Nachrichtenaustausch im bidirektionalen Modus, bis die Verbindung zwischen Client und Server bestehen bleibt. Wenn einer von ihnen (Client-Server) stirbt oder beschließt, die Verbindung zu schließen, wird die Verbindung von beiden Seiten geschlossen. Die Funktionsweise von Socket unterscheidet sich geringfügig von der Funktionsweise von HTTP. Der Statuscode 101 bezeichnet das Switching-Protokoll in WebSocket.



Wann kann ein Web-Socket verwendet werden:

    Echtzeit-Webanwendung: Echtzeit-Webanwendung verwendet einen Web-Socket, um die Daten auf der Client-Seite anzuzeigen, die kontinuierlich vom Backend-Server gesendet werden. In WebSocket werden Daten kontinuierlich in dieselbe bereits offene Verbindung gepusht/übertragen, weshalb WebSocket schneller ist und die Anwendungsleistung verbessert.
    Für z.B. B. auf einer Handelswebsite oder beim Bitcoin-Handel, werden die Daten zur Anzeige von Preisschwankungen und -bewegungen kontinuierlich vom Backend-Server über einen WebSocket-Kanal an den Client weitergeleitet.
    Gaming-Anwendung: In einer Gaming-Anwendung können Sie sich darauf konzentrieren, dass Daten kontinuierlich vom Server empfangen werden und ohne Aktualisierung der Benutzeroberfläche auf dem Bildschirm wirksam werden. Die Benutzeroberfläche wird automatisch aktualisiert, ohne dass überhaupt eine neue Verbindung hergestellt werden muss Sehr hilfreich in einer Gaming-Anwendung.
    Chat-Anwendung: Chat-Anwendungen verwenden WebSockets, um die Verbindung nur einmal herzustellen und die Nachricht unter den Abonnenten auszutauschen, zu veröffentlichen und zu verbreiten. Es verwendet dieselbe WebSocket-Verbindung zum Senden und Empfangen der Nachricht und für die Eins-zu-Eins-Nachrichtenübertragung.

Wann Sie WebSocket nicht verwenden sollten: WebSocket kann verwendet werden, wenn in Echtzeit aktualisierte oder kontinuierliche Datenströme über das Netzwerk übertragen werden sollen. Wenn wir alte Daten abrufen möchten oder die Daten nur einmal abrufen möchten, um sie mit einer Anwendung zu verarbeiten, sollten wir uns dafür entscheiden HTTP-Protokoll Alte Daten, die nicht sehr häufig benötigt oder nur einmal abgerufen werden, können über die einfache HTTP-Anfrage abgefragt werden. Daher ist es in diesem Szenario besser, WebSocket nicht zu verwenden.

Notiz: RESTful-Webdienste reichen aus, um die Daten vom Server abzurufen, wenn wir die Daten nur einmal laden.

Unterschiede zwischen HTTP- und WebSocket-Verbindung:

WebSocket-Verbindung HTTP-Verbindung
WebSocket ist ein bidirektionales Kommunikationsprotokoll, das die Daten vom Client zum Server oder vom Server zum Client senden kann, indem es den eingerichteten Verbindungskanal wiederverwendet. Die Verbindung bleibt bestehen, bis sie entweder vom Client oder vom Server beendet wird. Das HTTP-Protokoll ist ein unidirektionales Protokoll, das auf dem TCP-Protokoll aufbaut, einem verbindungsorientierten Transportschichtprotokoll. Wir können die Verbindung mithilfe von HTTP-Anforderungsmethoden herstellen, nachdem wir die Antwort erhalten haben. Die HTTP-Verbindung wird geschlossen.
Fast alle Echtzeitanwendungen wie (Handel, Überwachung, Benachrichtigung) Dienste verwenden WebSocket, um die Daten auf einem einzigen Kommunikationskanal zu empfangen. Eine einfache RESTful-Anwendung verwendet ein zustandsloses HTTP-Protokoll.
Alle häufig aktualisierten Anwendungen verwendeten WebSocket, da es schneller als HTTP Connection ist. Wenn wir eine Verbindung für einen bestimmten Zeitraum nicht aufrechterhalten oder die Verbindung nicht für die Datenübertragung wiederverwenden möchten; Eine HTTP-Verbindung ist langsamer als WebSockets.

Notiz: Abhängig von Ihrem Projekt müssen Sie wählen, ob es sich um eine WebSocket- oder HTTP-Verbindung handelt.