Websocket

Bevor der W3C-Standard Websocket eingeführt wurde, beschränkte sich die HTTP-Kommunikation zwischen Browser und Server auf das sogenannte Frage-Antwort-Prinzip. Das bedeutet, dass der Browser eine Anfrage stellt, auf die der Server antwortet. Von selbst aktiv werdend kann der Webserver keine Daten an den Browser senden, stattdessen muss er wiederholt anfragen, was auch als „Polling“ bezeichnet wird. Durch Websockets – basierend auf HTTP – leitet der Browser die Kommunikation einmalig ein, danach bleibt die darunterliegende TCP-Verbindung offen.

Allgemeine Informationen zum Thema

Dank Websockets ist es möglich, Nachrichten zwischen Server und Browser auszutauschen, ohne sich an den Zyklus von Frage und Antwort halten zu müssen. Der ständige Verbindungsauf- und -abbau entfällt zudem, sodass der Server immerzu Nachrichten an den Browser senden kann. Im Browser werden dadurch Events ausgelöst, auf die mit JavaScript reagiert werden kann. Auf der anderen Seite kann auch der Browser unentwegt Nachrichten an den Server senden, womit Websockets einer TCP/IP-Verbindung ähneln. Im Laufe der Zeit kam es bei Websocket-Prinzip zu regelmäßigen Überarbeitungen, was unter anderem mit Bedenken hinsichtlich des Datenschutzes zusammenhing[1].

Hintergrund der Websocket-Entwicklung

Die Entwicklung einer Technologie wie Websocket wurde nötig, weil das Internet sich verändert hat. Nach und nach kamen immer mehr Web-Anwendungen zum Einsatz, die nach Lösungen verlangten. Nachrichtenticker, Börsenticker, Messanger und nicht zuletzt Spiele stießen an ihre Grenzen, wenn die Kommunikation nicht in (nahezu) Echtzeit stattfinden konnte. Einhergehend mit dem Begriff Web 2.0 veränderte sich das Word-Wide-Web im Laufe der Zeit erheblich. Diese Veränderungen betrafen die Verwendung, den Umgang und die Wahrnehmung der Nutzer im Netz. Heute wird das Internet längst als eine eigenständige Plattform betrachtet, das ausschließliche Suchen nach Informationen bildet nur noch einen geringen Teil des Netzes ab. Viele Websites – etwa Facebook, Google Docs, Flickr, Twitter, YouTube und andere mehr – sind nur oberflächlich Websites, sondern darunter die Benutzeroberfläche von Web-Anwendungen, für deren Funktionalität ein Browser benötigt wird. Für die Benutzer werden Inhalte zur Verfügung gestellt, um mit ihnen zu arbeiten, sich zu informieren, sich auszutauschen oder sich Nachrichten zu schreiben. Auch die Nutzung von News spielt inzwischen eine wichtige Rolle. Für all diese Anwendungen ist eine schnelle Übertragungsgeschwindigkeit nötig, möglichst in Echtzeit, also mit geringen Latenzzeiten[2].

Vorteile von Websockets gegen HTTP

Vor der Entwicklung von Websocket haben die meisten Anwendungen im Netz das Netzwerkprotokoll HTTP genutzt. Dabei werden Anfragen an den Server gesendet und eine Antwort erzeugt. Das Problem an dieser Vorgehensweise bestand in der Tatsache, dass immer die komplette HTML-Seite vom Server geladen wurde. Aus diesem Nachteil heraus folgte die Entwicklung der AJAX-Technologie, die ein wichtiger Baustein für viele Frameworks wurde. Dank AJAX wurde es möglich, die asynchrone Datenübertragung sowie das Laden von Inhalten als Hintergrundprozess zu realisieren. Die AJAX-Technologie hatte allerdings den Nachteil, dass der Datenfluss unidirektional (also in nur eine Richtung) vom Browser zum Server gerichtet war.

Zahlreiche der heute genutzten Anwendungen werden allerdings von mehreren Usern gleichzeitig genutzt. Als Beispiel sei ein Support-Chat genannt. Dort werden oft viele Nachrichten geschrieben. Mit AJAX kann die Bearbeitung nur gelingen, wenn in regelmäßigen Abständen beim Server nachgefragt wird, ob neue Nachrichten bzw. Antworten vorliegen. Dadurch können spürbare Verzögerungen entstehen. Steigt nun zum Beispiel zu Stoßzeiten die Zahl der Nutzer an, wird der Server immer stärker belastet, die Verzögerungen nehmen parallel dazu zu.

Durch Websockets wird diese Problemstellung gelöst. Dem Server wird der direkte Kontakt mit dem Browser ermöglicht, die Verbindung ist birektional (also: in beide Richtungen), sodass Client und Server sich informieren können, sobald Ereignisse vorliegen bzw. neue Nachrichten eingehen[3].

Einschränkungen mit Websockets

Selbst lange nach der Einführung von Websockets gab es hin und wieder Probleme. So berichtete Heise im Jahr 2017, dass es gelegentlich Schwierigkeiten gibt, die insbesondere in Verbindung mit Load-Balancern, Proxy-Servern und Mobilfunknetzen zusammenhängen. Empfohlen wurden Maßnahmen für die Verwaltung von Verbindungen und die mögliche Synchronisation von Daten[4].

Bedeutung für das Development

Gerade bei der Verwendung von Messangern, Spielen, aber auch bei Livetickern oder dem Einkauf bei eBay hat sich der Einsatz von Websockets als vorteilhaft herausgestellt. Alles in allem lässt sich jedoch feststellen, dass die Möglichkeit, im Netz Dinge in Echtzeit auszuführen, heute faktisch unverzichtbar ist. Das Web hat sich nach und nach zu einer großen Anwender-Plattform entwickelt, Verfahren wie „Polling“ oder „Long Polling“ können den Anforderungen an die große Auswahl der unterschiedlichsten Anwendungen nicht mehr gerecht werden, da zu viele Requests in Richtung Server und Browser benötigt werden[5].

Einzelnachweise

  1. Websockets: Glossar it-visions.de. Abgerufen am 21.03.2019
  2. Peer-to-Peer EchtzeitdatenManagementsystem users.informatik.haw-hamburg.de Abgerufen am 21.03.2019
  3. Sichere Echtzeit Anwendungen mit Autobahnjs und Thruway auf Basis von Symfony realisieren, Teil 1 braune-digital.com Abgerufen am 21.03.2019
  4. Einführung in Node js Folge 14 Websockets heise.de Abgerufen am 21.03.2019
  5. WebSocket Annaeherung an Echtzeit im Web heise.de Abgerufen am 21.03.2019

Weblinks