WebSockets

Was sind WebSockets?

WebSockets bieten die Möglichkeit, die Kommunikation zwischen Webserver und Browser zu steuern. Dabei geht es um die Aktualisierung von Inhalten, die im Browser angezeigt werden. Üblicherweise erfolgt die Kommunikation zwischen Webserver und Browser über eine reine HTTP-Verbindung. Damit Inhalte aktualisiert werden, muss bei einer reinen HTTP-Verbindung der Browser eine Anfrage an den Webserver senden. Dies ist beim Einsatz von WebSockets nicht erforderlich. Hier sendet der Webserver Nachrichten bzw. Aktualisierungen an den Browser, ohne dass der Browser aktiv werden muss. Es bedarf also keiner Benutzeraktion, damit ein Server Nachrichten an den Browser sendet oder Inhalte im Browser aktualisiert. Das Versenden der Nachrichten oder das Aktualisieren des Browserinhalts wird automatisch von einem Ereignis ausgelöst.



Ereignisse
Ereignisse, die das Versenden der Nachrichten oder das Aktualisieren des Browserinhalts auslösen, können in Intrexx (intern) oder außerhalb von Intrexx (extern) stattfinden. Externe Ereignisse können der Eingang von Status- oder Warnmeldungen von Maschinen sein oder der Eingang von E-Mails in einem externen Postfach. Interne Ereignisse können Timer-Ereignisse, Datengruppen-Ereignisse oder benutzerdefinierte Ereignisse sein, im Grunde also alle "Vorgänge", auf die mit Prozess-Ereignisbehandlern reagiert werden kann. Weitere Informationen zu Ereignissen finden Sie in Abschnitt Anwendungsfälle.

Nachrichteninhalte
Die Nachrichten, die der Intrexx Portal Server an den Browser sendet, werden in Intrexx erstellt. Hierfür gibt es verschiedene Möglichkeiten. Sie können beispielsweise immer gleichbleibende, statische Nachrichten erstellen. Dies kann beim Eingang von E-Mails in einem externen Postfach sinnvoll sein. In diesem Fall kann es genügen, wenn jeweils die Nachricht "Sie haben neue Mail." angezeigt wird. Sie können auch dynamische Nachrichten erzeugen, die beispielsweise unterschiedliche Variablen enthalten. Hier stehen Ihnen u.a. alle Möglichkeiten von Groovy-Script und Velocity-Script zur Verfügung. Nachrichten können einfache Textnachrichten oder vom Typ JSON sein.

Topics - Nachrichten entgegennehmen, Nachrichten zur Verfügung stellen
Nachrichten werden nicht unmittelbar vom Server an den Browser gesendet. Vielmehr werden die Nachrichten zunächst an ein so genanntes Topic übergeben bzw. das Topic nimmt die Nachrichten entgegen. Topics müssen Sie in Intrexx anlegen.


Topics können auch Nachrichten entgegennehmen, die aus mehreren Ereignissen resultieren.



Topics subskribieren
Ein Topic kann die von ihm entgegengenommenen Nachrichten an den Browser ausliefern bzw. senden. Zunächst aber muss ein Topic vom Browser subskribiert werden. Über das Subskribieren wird im Browser festgelegt, ob die Nachrichten eines Topics im Browser angezeigt werden sollen.


Browserseitig wird ebenfalls festgelegt, wo bzw. wie die Nachricht angezeigt werden soll. Diese kann zum Beispiel in einem Meldungsfenster oder in einem statischen Textfeld (Kontrollelement "Statischer Text") angezeigt werden. Weiterhin wird festgelegt, zu welchem Zeitpunkt das Subskribieren des Topics beginnen und gegebenenfalls beendet werden soll.

Topics Technisch stellt ein Topic im Zusammenhang mit WebSockets das Objekt dar, das die Nachrichten ausliefert bzw. zur Verfügung stellt. Ein Topic kann von einem "Consumer" subskribiert (=abonniert) werden. Ein Topic lässt sich mit einem Nachrichtenkanal vergleichen, der abonniert werden kann.
Hinweis Topics tauchen auch im Zusammenhang mit Intrexx Industrial - Test-MQTT-Broker auf. Sie werden dort in vergleichbarer Weise eingesetzt.

Wer darf Topics subskribieren?
Sie können für Topics Rechte vergeben. Damit können Sie steuern, dass nur solchen Benutzern Nachrichten angezeigt werden, für die diese Nachrichten vorgesehen oder relevant sind.



Über die Rechte können Sie ebenfalls steuern, welcher Benutzer Nachrichten an ein Topic übergeben darf.

WebSockets versus Polling
Die automatisierte Aktualisierung von Webseiten war auch bislang schon in Intrexx möglich. Dies konnte über das so genannte Polling realisiert werden. Beim Polling fragt der Browser in einem vorgegebenen Intervall Informationen beim Server ab. Somit werden Nachrichten vom Server nicht sofort im Browser angezeigt, sondern immer nur zum Zeitpunkt der Anfrage durch den Browser. Gleichzeitig wird Last auf dem Server erzeugt. Detaillierte Informationen hierzu finden Sie im Beitrag Polling in "Tipps & Tricks".
Beim Einsatz von WebSockets sendet der Server aktiv Nachrichten. Der Browser muss nicht immer wieder beim Server anfragen. Somit erfolgen die Benachrichtigungen bzw. Aktualisierungen ohne Verzögerung. Gleichzeitig ist die Serverlast geringer als beim Polling.