Websocket

Websocket ist ein Kommunikationsprotokoll, das eine bidirektionale Verbindung zwischen einem Server (hier: Miniserver) und einem Client (hier: Webbrowser oder eigene Software) ermöglicht. Während bei normaler http-Kommunikation der Client immer einen Aufruf durchführen muss, um einen Status des Servers abzufragen, kann bei Websocket-Kommunikation nach dem Öffnen eines Kanals der Server dem Client eine Statusänderung ohne Anforderung mitteilen. 

Websocket-Kommunikationslogik (Punkt 2.2 der Dokumentation auf der Loxone Webseite)

Sicherheit

Die Authentifizierung der Websocket-Verbindung ist verschlüsselt. Nach der Authentifizierung ist die weitere Kommunikation jedoch unverschlüsselt. 

Kommunikationsvergleich REST Webservice vs. Websocket

Hier ein Versuch, den Vorteil einer Websocket-Verbindung gegenüber der REST-Schnittstelle zu verdeutlichen:

 

REST Webservice

Websocket

 

REST Webservice

Websocket

Anfrage

Client

Server

Client

Server

Startsequenz

Kanal öffnen

-

-

Öffne Websocket-Kanal

Websocket-Kanal ist geöffnet

Gesamt-Struktur

Anforderung Strukturdatei

Liefere Strukturdatei

Anforderung Strukturdatei

Liefere Strukturdatei

Gesamt-Status

-

-

Anforderung Gesamtstatus

Liefere Gesamtstatus:
Licht 1 aus
Licht 2 ein 

Licht 1

Anforderung Status Licht 1

Licht 1 aus

-

-

Licht 2

Anforderung Status Licht 2

Licht 2 ein

-

-

Anwender schaltet Licht 2 aus

Licht 1

Anforderung Status Licht 1

Licht 1 aus

-

-

Licht 2

Anforderung Status Licht 2

Licht 2 aus

-

Licht 2 wurde ausgeschaltet!

Erläuterung:

Beim Starten des Clients muss in beiden Varianten die Strukturdatei geladen werden. Aus der Strukturdatei weiß der Client, welche Funktionsbausteine (Taster, Lichtsteuerung usw.) dargestellt werden sollen. Während der REST-Client nun alle Funktionsblöcke einzeln abfragen muss, kann der Websocket-Client mit einer Anforderung den Status aller Funktionsbausteine abfragen.

Damit im weiteren Verlauf der REST-Client aktuell bleibt, muss er alle Funktionsbausteine immer wieder abfragen. Der Websocket-Client hingegen braucht selbst nicht aktiv werden. Sobald (z.B. durch einen Anwender) eine Änderung durchgeführt wird, sendet der Server diese Statusänderung an den Client.

Der Vorteil von Websocket ist daher eine sehr schnelle Aktualisierung des Status und eine Reduzierung des Verkehrs auf das Nötigste.