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 | ||
---|---|---|---|---|
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 | 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.