Von Social-Media-Feeds über Chat- und Videokonferenz-Apps bis hin zu Online-Spielen und Embedded-Systemen in IoT-Geräten gehören Echtzeitanwendungen (Real-Time Applications, RTAs) heute zu den meistgenutzten und einflussreichsten Softwarekategorien. RTAs aktualisieren Informationen, „sobald sie von ihren Autoren veröffentlicht werden, anstatt dass sie oder ihre Software eine Quelle regelmäßig auf Updates überprüfen müssen„.
Dauerhafte Verbindungen und die Übermittlung an verbundene Clients sind heute fester Bestandteil vieler moderner Anwendungen. Wenn eine Webanwendung nicht einfach nur statische Inhalte bereitstellt, z. B. eine B2B-Website, erwarten die Benutzer inzwischen Echtzeitfunktionen.
Wie funktioniert eine Echtzeit-Anwendung?
Die Funktionsweise eines RTA stützt sich hauptsächlich auf Echtzeit-API-Mechanismen, von denen es insgesamt vier gibt:
- HTTP streaming
- HTTP long-polling
- Webhooks
- WebSockets
Die Rolle von WebSockets in RTAs
Die Aktualisierung von Inhalten in RTAs mit geringer Latenz (in der Regel innerhalb von Millisekunden bis Sekunden nach der Veröffentlichung) wird durch die WebSockets-API-Technologie ermöglicht. WebSockets eröffnen eine interaktive Zwei-Wege-Kommunikationssitzung zwischen dem Browser des Benutzers und einem Server. Nachrichten können an einen Server gesendet werden und erhalten ereignisgesteuerte Antworten, ohne den Server nach einer Antwort fragen zu müssen.
Schauen wir uns WebSockets und Polling etwas genauer an, da sie das grundlegende Funktionsprinzip eines RTA darstellen.
Polling
Das Polling funktioniert folgendermaßen:
- Es gibt bestimmte Zeiträume, nach denen eine Anfrage an den Server geschickt wird, um nach Aktualisierungen in Form einer Abstimmung zu suchen;
- Der Server seinerseits prüft, ob es Aktualisierungen gibt. Wenn es welche gibt, bestätigt er sie, indem er ein Up-Vote sendet. Wenn nicht, antwortet er mit einer Ablehnung.
- Wenn der Server ein Up-Vote abgibt, fragt das System auf der Benutzerseite weiter nach den aktualisierten Daten, die dann vom Server weitergeleitet werden.
- Sobald dieser Prozess abgeschlossen ist, werden in regelmäßigen Abständen erneut Anfragen an den Server gesendet.
Ajax wird gewählt, weil es leichtgewichtig ist und Teile der Seite aktualisieren kann, ohne sie komplett neu zu laden. Das einzige Problem ist die Bandbreite, das später mit Hilfe einer Methode namens Long Polling gelöst wird. Bei dieser Methode bleibt eine HTTP-Anfrage so lange bestehen, bis eine neue Nachricht von einem Server gesendet wird.
Long polling via Ajax
Heutzutage werden diese Ansätze zwar immer noch verwendet, aber die meisten Entwickler tendieren dazu, andere Wege zu nutzen, um Server-Push zu erreichen.
Comet
Wenn wir über Polling und Long Polling sprechen, müssen wir auch Comet erwähnen. Dies ist im Grunde ein Neologismus, der ein Webanwendungsmodell beschreibt. Im üblichen Zyklus der Anfrageverarbeitung initiiert der Client die Verbindung und fordert das gewünschte Dokument an. Nachdem die Daten zurückgegeben wurden, wird die Verbindung unterbrochen. Im Falle von Сomet initiiert der Server die Verbindung und sendet eine Nachricht an den Client. Gute Beispiele für Comet sind Benachrichtigungen in Facebook, Twitter, Chat in Gmail usw.
Der Grund, warum es in Verbindung mit Polling erwähnt wird, ist, dass Comet Polling, Long-Polling und sogar HTML5 WebSockets beinhaltet und durch diese realisiert wird, worauf wir noch eingehen werden.
WebSockets in Echtzeit-Anwendungen (RTAs)
Im Jahr 2011 wurde das WebSockets-Protokoll eingeführt. Seine Hauptfunktion besteht darin, einen bidirektionalen Kommunikationskanal bereitzustellen. Es ermöglicht die Interaktion zwischen einem Browser und einem Webserver, indem es ihnen eine dauerhafte Zwei-Wege-Verbindung bietet, innerhalb derer sie Nachrichten hin- und herschicken können, während die Verbindung offen ist.
Das WebSockets-Protokoll ist immens wichtig für die Reaktionsfähigkeit einer Anwendung, die in der Regel viele gleichzeitige Verbindungen und schnell wechselnde Inhalte hat. Ein gutes Beispiel hierfür wäre ein Multiplayer-Online-Spiel.
Wo werden WebSockets in Echtzeitanwendungen eingesetzt?
WebSockets werden in der modernen Webentwicklung immer beliebter und können für einige der folgenden Arten von Anwendungen eingesetzt werden:
- Chat Anwendungen: Anwendungen für Video- und Audiokonferenzen
- Multiplayer-Online-Spiele
- Social feeds
- Gleichzeitiger Datenaustausch
- Überwachung des Aktienmarktes
- Sport-Updates
- Online-Broadcast usw.
Beispiele sind: Blockchain, Coinbase, CBIX, Slack
Entwicklung eines WebSockets-basierten RTA – Tech Stack
Wenn Sie einen RTA auf der Grundlage einer WebSockets-API entwickeln wollten, welchen Tech-Stack würden Sie verwenden?
Für die Laufzeitumgebung und den verteilten Anwendungsrahmen:
Für die Datenbank
Das Toolkit für Server-Side-Templating
Das K&C-Team hofft, dass Sie diesen Artikel als eine kurze Einführung in Echtzeitanwendungen und WebSockets nützlich fanden. Wenn Sie noch Fragen haben oder Ihr nächstes Anwendungsprojekt mit uns besprechen möchten, zögern Sie nicht, uns zu kontaktieren. Klicken Sie einfach unten auf das Banner!