Was ist WebSocket?
Stellen Sie sich vor, Sie schreiben eine E-Mail an einen Freund oder Kollegen. Sie beginnen immer mit Hi, gefolgt vom Kontext und enden mit einem Dankeschön. Stellen Sie sich jetzt vor, dass Sie und Ihr Freund / Kollege ein persönliches Gespräch führen. Würdest du trotzdem jeden deiner Texte mit Hallo beginnen und mit Danke enden? Ein großes NEIN, richtig? Das fasst praktisch HTTP und WebSocket zusammen.
Technisches Verständnis von WebSocket
Ein WebSocket ist ein bidirektionales Kommunikationsprotokoll. Es bietet eine Vollduplex-Verbindung. Lassen Sie uns verstehen, wie wichtig diese Begriffe sind.
Im Rückblick auf unser Beispiel von E-Mails und persönlichen Gesprächen bedeuten E-Mails das HTTP-Protokoll, während persönliche Gespräche das WebSocket-Protokoll bedeuten. Dies bedeutet nicht, dass E-Mails über das HTTP-Protokoll gesendet werden. E-Mails verwenden meistens SMTP-Protokolle, aber darüber sollten wir uns vorerst keine Gedanken machen. Die wesentliche Erkenntnis aus dem Beispiel ist das Öffnen und Schließen der zugrunde liegenden Verbindung zwischen den beiden Parteien, die Informationen austauschen.
HTTP tauscht Informationen aus, indem bei jedem Request-Response-Zyklus eine neue Verbindung hergestellt wird. Jedes Mal, wenn Sie eine Anfrage senden oder eine Antwort erhalten, baut HTTP eine neue Verbindung auf. Stellen Sie sich eine Verbindung einfach als sichere Leitung zur Übertragung von Informationen vor. Sobald Ihre Informationen übermittelt wurden, wird die Verbindung über HTTP getrennt.
WebSocket hält die Verbindung für Sie offen, sodass Sie Informationen über dieselbe Leitung austauschen können, bis einer von Ihnen die Verbindung schließt.
Ein bisschen technischer…
Okay, ich verstehe, dass die Verbindung offen bleibt. Wie hilft es mir? Es macht keinen Unterschied, ob ich E-Mails oder Chatnachrichten sende.
Du hast recht. Als Endbenutzer ist der Unterschied für Sie nicht sichtbar. Denken wir wie ein Anwendungsentwickler. Wenn ich sage, eine sichere Leitung für den Informationsaustausch zu eröffnen, ist ein Prozess damit verbunden. Dies wird allgemein als Handshaking bezeichnet. Hierbei handelt es sich um einen Vorgang, bei dem beide an einer Konversation beteiligten Computer vereinbaren, einen Port zum Senden und Empfangen von Informationen zu öffnen. Jetzt sind diese Ports für einander gesperrt und können nicht für eine dritte Maschine verwendet werden.
Beim Handshake sendet und empfängt das HTTP-Protokoll einige zusätzliche Bytes, um zu bestätigen, ob ein Port auf beiden Computern frei ist, und ruft die Details des Ports ab. Diese zusätzlichen Bytes sind ein Overhead, wenn ein häufiger Informationsaustausch erforderlich ist. Daher WebSocket.
Wann soll WebSocket verwendet werden und wann nicht?
Bei weitem ist es offensichtlich, dass WebSocket nur dann nützlich ist, wenn ein häufiger Informationsaustausch erforderlich ist. WebSocket bietet eine Duplexverbindung. Dies bedeutet, dass Informationen gleichzeitig gesendet und empfangen werden können. Dies geht offensichtlich zu Lasten der Sperrung des Ports, bis die Zeitinformationen ausgetauscht werden. Die Verwendung von WebSocket ist also ein Kompromiss zwischen der Einsparung wichtiger Bytes und der Ermöglichung schnellerer Konversationen auf Kosten der längeren Blockierung eines Ports.
Der beste Anwendungsfall von WebSocket ist, wenn Sie sehr schnell Echtzeitdaten benötigen, z. B. Aktienkurse. Die Aktienkurse ändern sich jede Sekunde. Die Verwendung von HTTP würde also wichtige Zeit für unnötiges Handshaking verschwenden und die Angebote würden veralten. Verwenden Sie stattdessen WebSocket und erledigen Sie dies schneller.
Wenn Sie sich im Gegensatz dazu eine Verzögerung von einigen Millisekunden bei der Suche nach Informationen leisten können, müssen Sie sich für HTTP entscheiden.
Wie ist WebSocket entstanden?
In den ersten Tagen war das Internet ein riesiges Netzwerk von Seiten mit Textinformationen. Dies waren zumeist statische Seiten, was bedeutete, dass die Informationen konstant waren und sich bei nachfolgenden Abrufen nicht änderten. Im Laufe der Zeit wurden umfangreiche Inhalte wie Bilder zu einem unverzichtbaren Bestandteil der Webseiten. Die Seiten wurden auch dynamisch, was bedeutete, dass nun die Informationen auf den Seiten basierend auf Abfragen generiert werden konnten.
Dies führte zu technologischen Fortschritten mit der Erfindung von Dynamic HTML, JavaScript usw. Sie waren alle sehr fortschrittlich, verwendeten jedoch HTTP-Protokolle. Das Problem mit HTTP-Protokollen - die Verbindung war nicht duplex. Die Kommunikation war unidirektional. Zu jedem Zeitpunkt kann entweder der Client eine Anfrage an den Server senden oder der Server kann antworten.
Dies gab den Weg frei für WebSocket-Protokolle, die eine Vollduplex-Verbindung ermöglichten, um das Benutzererlebnis zu verbessern.
Den Begriff "Vollduplex" verstehen
Wir sind schon oft auf den Begriff Vollduplex gestoßen. Was heißt das eigentlich?
In HTTP wird die Anforderung immer vom Client initiiert. Dies bedeutet, dass der Server nur antwortet, wenn der Client eine Anfrage sendet. Dies macht die Kommunikation unidirektional.
In WebSocket können sowohl der Client als auch der Server gleichzeitig Nachrichten aneinander senden. Der Client muss nicht jedes Mal eine Anforderung stellen, wenn eine Antwort erforderlich ist. Dies macht die Verbindung bidirektional.
Um nun Bidirektionalität zu erreichen, muss man annehmen, dass zu jedem Zeitpunkt zwei Verbindungen aufrechterhalten werden. Hier ist WebSocket anders. WebSocket führt dies über eine einzelne TCP-Verbindung durch. Dies wird als Vollduplex-Verbindung bezeichnet, dh bidirektionale Kommunikation über einen einzelnen Kanal.
WebSocket-Attribute, -Ereignisse und -Methoden
Lassen Sie uns eine WebSocket-Verbindung erstellen. Der folgende Befehl erledigt dies für uns:
var Socket = new WebSocket (URL, (Protokoll));
Die neue WebSocket-Methode ist die offen gelegte API-Methode, die eine hergestellte Verbindung mit der als erster Parameter angegebenen URL zurückgibt und einen optionalen Protokollparameter einhält.
1. Attribute
Sobald die Verbindung hergestellt ist, haben wir die folgenden Attribute in unserem Socket-Objekt:
ich. Socket.readyState
Ein schreibgeschütztes Attribut, das den Status der Verbindung angibt.
0 - Verbindung wurde noch nicht hergestellt.
1 - Verbindung ist hergestellt und Kommunikation ist möglich.
2 - Die Verbindung wird per Handshake hergestellt.
3 - Verbindung wurde geschlossen oder konnte nicht geöffnet werden.
ii. Socket.bufferedAmount
Ein schreibgeschütztes Attribut, das die Anzahl der Bytes angibt, die mit der send () -Methode in die Warteschlange gestellt werden.
2. Ereignisse
ich. Socket.onOpen
Ein Ereignis, das beim Öffnen einer Verbindung ausgelöst wird.
ii. Socket.onMessage
Ein Ereignis, das ausgelöst wird, wenn der Client eine Nachricht vom Server empfängt.
iii. Socket.onError
Das Ereignis hat einen Kommunikationsfehler ausgelöst.
iv. Socket.onClose
Das Ereignis wird ausgelöst, wenn eine Verbindung geschlossen wird.
3. Methoden
ich. Socket.send (Daten)
Die Sendemethode überträgt die Daten über die Verbindung.
ii. Socket.close ()
Diese Methode beendet die bestehende Verbindung.
Beispiel
var socket = new WebSocket(“ ws://echo.websocket.org ”);
if (socket.readyState === WebSocket.OPEN)(
socket.send(“Hello World”);
)
if (socket.readyState === WebSocket.OPEN)(
socket.close( );
)
Beispiel aus der realen Welt
StackOverflow ist eine sehr beliebte Website, die WebSocket verwendet, um Benachrichtigungen zu senden, wenn eine neue Antwort auf die Frage verfügbar ist.
Empfohlener Artikel
Dies war eine Anleitung zu Was ist WebSocket? Hier haben wir die Konzepte, Definitionen, WebSocket-Attribute, Ereignisse und Methoden von WebSocket besprochen. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -
- Ist Hadoop Open Source?
- Was ist Java-Vererbung?
- Was ist Multithreading in C #?
- Was sind ASP.Net-Webdienste?
- Erstellung und Methoden des Multithreading in C #